Desenvolvendo KMDF Drivers

Download da Ementa

Objetivo

O objetivo deste curso é preparar os alunos que queiram entender, testar, complementar ou construir drivers para Windows empregando os conceitos do Windows Driver Foundation (WDF) aplicados ao Kernel, utilizado o Kernel Mode Driver Framework (KMDF).

Público alvo

Este curso é destinado aos desenvolvedores ou estudantes que precisam entender os conceitos fundamentais sobre implementação de drivers para Windows. Este curso não abordará implementações específicas de drivers, tais como impressoras, vídeo, SCSI, NDIS, USB, 1394 ou UMDF.

Pré-requisitos

  • Os estudantes deverão ter sólidos conhecimentos da linguagem C tais como estruturas, ponteiros, heap, utilização da pilha, alocação dinâmica de memória e listas. O uso de linguagem C++ não será empregado neste curso. Os estudantes também deverão conhecer conceitos de depuração de software.
  • Conhecimentos básicos da API do Windows tais como lidar com arquivos, handles, eventos, threads e processos.
  • Conceitos básicos de Sistemas Operacionais tais como User-Mode versus Kernel-Mode, memória virtual, threads, processos, concorrência, registradores e interrupções.

Metodologia

Os tópicos são abordados de maneira simples e gradativa de forma a colocar em prática cada novo tópico apresentado. O curso é repleto de atividades práticas que despertam novas dúvidas enquanto o estudante ainda está em curso, tendo assim a oportunidade de consultar um profissional da área. O curso é todo apresentado em slides e acompanha material impresso.

Tópicos abordados

  1. Visão Geral da Arquitetura do Sistema
    • Processos e Threads
    • Memória Virtual e Paginação
    • Kernel-Mode x User-Mode
    • Subsistemas e API Nativa
    • IoManager
    • Árvore de Dispositivos e Plug-and-Play
    • Object Manager
    • Camada de Abstração de Hardware
  2. Ambiente (obtenção, instalação e utilização)
    • Windows Driver Founation Kit
    • Microsoft Visual Studio Express
    • Microsoft Debugging Tools for Windows
    • Símbolos
  3. Escrevendo um Driver
    • WDM e WDF
    • Objetos KMDF
    • Hierarquia de Objetos
    • Estruturas e Callbacks
    • Escrevendo um Driver Básico
    • Compilando o Driver
    • Instalando o Driver
    • Depurando o Driver
    • Criando Device Objects
    • Symbolic Links
    • I/O Request Objects
    • Buffers e Memory Objects
    • I/O Queues
    • I/O Targets
    • I/O Event Callbacks
    • IOCTLs e DeviceIoControl
    • Implementando Dispatch Routines
    • Objetos, Handles e Ponteiros
    • Contexto Arbitrário
    • IRQLs, APCs, DPCs e WorkItems
    • Sincronização
    • Eventos e Timers
  4. Escrevendo Filtros
    • Filtros para Drivers Legacy
    • Repassando Requests
    • I/O Completion Callbacks
    • Tratamento de Requests Pendentes
    • Criando Requests para outros Drivers
    • Cancelamento de Requests
  5. Plug-and-Play Manager
    • Estados do Plug-and-Play
    • Iniciando e Inrterrompendo Devices
    • Sincronizando I/O
    • Notificações do PnP Manager
    • Escrevendo a EvtDriverDeviceAdd
    • Enumeração de Devices Filhos
  6. Power Manager
    • Estados do Sistema
    • Estados do Device
    • Recebendo Notificações de Transição
    • Deligando o Device em Idle
    • Acordando o Device
    • Acordando o Sistema
  7. Interações com Hardware
    • Recebendo e Mapeando Recursos de I/O
    • Port I/O
    • Memória Mapeada
    • Interrupt Objects
    • Sincronizando Interrupções
    • DMA
  8. Instalações
    • Criando um arquivo INF
    • Instalando um Driver
    • Desistalando um Driver
  9. Referências
    • Web Sites
    • Grupos de Discussão
    • Livros
    • Exemplos WDF

Comments are closed.