Windows Device Drivers

Documentos relacionados

ASPECTOS GERAIS HISTÓRICO

Sistemas Operacionais. Prof. André Y. Kusumoto

Introdução à Computação: Sistemas de Computação

Introdução à Informática

Windows NT 4.0. Centro de Computação

6 - Gerência de Dispositivos

Arquitetura dos Sistemas Operacionais

Arquitetura WindowsNT. Sistemas Operacionais. Página Volnys Bernal. Arquitetura. Arquitetura. Arquitetura. Arquitetura.

Conceitos Básicos sobre Sistemas Operacionais

Um retrospecto da aula passada... Um retrospecto da aula passada... Principais Aspectos de Sistemas Operacionais. Gerência de E/S

Manual de Instalação e Configuração do SQL Express

O Software e Sistemas Operacionais. Prof. Bruno Guilhen

implementação Nuno Ferreira Neves Faculdade de Ciências de Universidade de Lisboa Fernando Ramos, Nuno Neves, Sistemas Operativos,

Estrutura Interna do KernelUNIX Sistema O. Estrutura Interna de Arquivos (1) Estrutura Seqüência. User application. Standard Unix libraries

Máquinas Virtuais: Windows 2008 Server

Sistemas Operacionais. Patrícia Megumi Matsumoto Luciana Maria Gregolin Dias

Tencologia em Análise e Desenvolvimento de Sistemas Disciplina: WEB I Conteúdo: Arquitetura de Software Aula 03

Laboratório de Hardware

ARQUITETURA E ORGANIZAÇÃO DE COMPUTADORES INTRODUÇÃO AOS SISTEMAS OPERACIONAIS. Prof. Dr. Daniel Caetano

UFRJ IM - DCC. Sistemas Operacionais I. Unidade IV Sistema de arquivos. Prof. Valeria M. Bastos Prof. Antonio Carlos Gay Thomé 13/06/2012 1

Um Driver NDIS Para Interceptação de Datagramas IP

Introdução à Sistemas Operacionais. Glauber Magalhães Pires

FACENS Engenharia Mecatrônica Sistemas de Computação Professor Machado. Memória Armazenamento Sistema de Arquivos

Introdução. Sistemas Operacionais

SISTEMAS OPERACIONAIS

Funções de um SO. Gerência de processos Gerência de memória Gerência de Arquivos Gerência de I/O Sistema de Proteção

Figura 01 Kernel de um Sistema Operacional

Apontamentos do livro de AI Linux. 1.5 Modo texto e modo gráfico

Turno/Horário Noturno PROFESSOR : Salomão Dantas Soares AULA Apostila nº

Componentes de um Sistema de Operação

Programação Web. Professor: Diego Oliveira. Conteúdo 02: JSP e Servlets

Prof. Marcos Ribeiro Quinet de Andrade Universidade Federal Fluminense - UFF Pólo Universitário de Rio das Ostras - PURO

Sistemas Operacionais Arquitetura e organização de sistemas operacionais: Uma visão estrutural hardware & software. Prof. MSc.

Estrutura de um Sistema Linux Moderno Padrões de um Sistema Linux. Prof. Claudio Silva

Descrição do Produto. Altus S. A. 1

Aspectos de Sistemas Operativos

Gerenciamento de Entrada e Saída Hélio Crestana Guardia e Hermes Senger

ARQUITECTURA DO WINDOWS

Arquitetura de Computadores. Introdução aos Sistemas Operacionais

Estrutura, Processos e Threads

Resumo até aqui. Gerenciamento Proteção Compartilhamento. Infra-estrutura de Software

Problema: Solução: Vantagens da estruturação em Níveis: Introdução INTRODUÇÃO À ARQUITETURA DE COMPUTADORES. Introdução

Generated by Foxit PDF Creator Foxit Software For evaluation only. Capitulo 1

Por dentro do Windows: Gerenciamento de Memória

Entradas/Saídas. Programação por espera activa Programação por interrupções

Introdução ao Android

SO - Conceitos Básicos. Introdução ao Computador 2010/01 Renan Manola

UNIDADE III Sistemas Operacionais WINDOWS

Organização de Computadores 1. Prof. Luiz Gustavo A. Martins

Instalar uma versão do Ubuntu de 32 bits ou de 64 bits?

O que é o Android? O que é o Android

Memória - Gerenciamento. Sistemas Operacionais - Professor Machado

Medidor Powersave V2 USB

Especificações. Conteúdo. Compatibilidade de Tags com o GPW-100. Tabela de Revisões

MANUAL DO USUÁRIO. AssetView FDT. AssetView FDT

Sistemas Operacionais Arquivos

Soluções para gerenciamento de clientes e Impressão móvel

Capítulo 11: Implementação de Sistemas de Arquivos. Operating System Concepts 8 th Edition

Backup e Recuperação Guia do Usuário

Aula 03-04: Modelos de Sistemas Distribuídos

CONCEITOS BÁSICOS DE UM SISTEMA OPERATIVO

3. Faça uma breve descrição sobre a topologia da rede e o Active Directory-AD DISCIPLINA DE ARQUITETURA FECHADA WINDOWS SERVER

Tecnologia da Informação. Prof Odilon Zappe Jr

SISTEMAS OPERACIONAIS LIVRES. Professor Carlos Muniz

Impressoras. Referência do Documento. Eurico Alves Luis Gomes Francisco Costa

SISTEMAS OPERACIONAIS DE ARQUITETURA ABERTA

WINDOWS NT SERVER 4.0

Estudo dos Principais Conceitos de Virtualização

Sistemas Operacionais

Neste tópico, abordaremos a funcionalidade de segurança fornecida com o SAP Business One.

8 Threads. 8.1 Introdução

Sistemas Operacionais

ESTRUTURA DE UM SISTEMA OPERACIONAL

Introdução a Banco de Dados Aula 03. Prof. Silvestri

Escola Adalgisa de Barros

Atendimento de Demandas CTIC

Sistemas Distribuídos Processos I. Prof. MSc. Hugo Souza

Capítulo 3 Projeto de Arquitetura

Sistemas Operativos I

O Padrão de Comunicação OPC e Suas Características

Introdução. Software (Parte I)

Vantagens do upgrade do software TecAt Plus 6 desde a versão TecAt Plus 5

Wireshark Lab: IP. Versão KUROSE, J.F & ROSS, K. W. Todos os direitos reservados 2011 BATISTA, O. M. N. Tradução e adaptação para Wireshark.

Introdução a Computação

Computador Digital Circuitos de um computador (Hardware)

Infra-Estrutura de Software. Introdução. (cont.)

ESTUDO DE CASO WINDOWS VISTA

Estudo de Caso 2: Windows Vista

Medical Office 2015 Instruções de Instalação e Configuração

Simulação de Redes de Comunicação

Sistemas Operacionais. Prof. M.Sc. Sérgio Teixeira. Aula 05 Estrutura e arquitetura do SO Parte 1. Cursos de Computação

INSTALANDO UM SERVIDOR WINDOWS SERVER 2012 R2 SERVER CORE

Sistemas Operacionais. Prof. M.Sc. Sérgio Teixeira. Aula 05 Estrutura e arquitetura do SO Parte 2. Cursos de Computação

Sistemas Operacionais

(Aula 15) Threads e Threads em Java

É a associação de mais de um fluxo de execução em um único processo.

Transcrição:

Windows Device Drivers Programação de Periféricos SO - 2013/14

Arquitetura Windows

Tipos de processos user-mode System Support Process Logon process e session manager Service Processes Agendador de tarefas, spool de impressao e servidores em geral incluem processos que executam como serviços no windows (MySQL, Tomcat, SQLServer ) User Application Windows 32-bit, Windows 64-bit, Windows 3.1 16-bit, MS-DOS 16-bit, POSIX 32-bit, or OS/2 32-bit Subsistems POSIX, OS/2 e Windows

Tipos de processos kernel-mode Windows Executive Contém os principais serviços do sistema operacional como gerência de memória, gerência de processos e threads, segurança, I/O, comunicação entre processos Windows Kernel Funções de baixo nível do sistema como escalonamento de threads, interrupções e lançamento de exceções, e contém também um conjunto de rotinas e objetos básicos que são usados pelo executive para implementar os serviços de mais alto nível Device Drivers Incluem os drivers de dispositivos, sistema de arquivos e protocolos de rede Hardware Abstraction Layer É uma camada de código que isola o kernel, os drivers e o executive das diferenças de hardware de plataformas específicas (como motherboards, por exemplo) Windowing e graphics system Implementa todas as funções de renderização, janelas e controles de interface, conhecido como Windows User and GDI Functions

Drivers possuem a extensão.sys Geralamente são armazenados no diretório windows/system32/drivers possuem geralmente um arquivo.inf que possui todas as informações de instalação do driver

Tipos de Drivers User-mode drivers Virtual Device Drivers: usados para compatibilidade de aplicações DOS 16bits, capturam as chamadas feitas por estas aplicações e mapeiam para Win32 Printer Drivers Kernel-mode drivers File system drivers: tratam as requisições direcionadas aos dispositivos de armazenamento ou dispositivos de rede Plug and play drivers:trabalham com algum hardware e integramse ao power manager e ao plug and play manager do windows Class Drivers: drivers genéricos para classes de dispositivos Minidrivers: drivers que adicionam aos class drivers algumas funções específicas do fabricante Function drivers: incorporam todas as funcionalidades necessárias para suportar um dispositivo Filter Drivers: filtram requisições de I/O para um driver específico e adicionam informações ou modificam seu comportamento Legacy drivers: drivers que controlam diretamente um hardware sem a ajuda de nenhum outro driver

Tipos de Drivers

Windows Driver Model WDM Framework introduzido à partir das versões Win98 e Win2000 que standariza os drivers em um modelo unificado e implementa os padrões de plug and play e power management Os drivers WDM são organizados em camadas (layered drivers) e comunicam-se através de I/O Request Packets IRPs Vantagens dos drivers que aderem ao WDM São compatíveis com Win98, WinME Win2000, WinXP e Win2003 server, Windows Vista (source and binary) Desvantagens Curva de aprendizado é muito alta Interações com eventos de power managemente a plug and play é muito complexa e por isso várias máquinas apresentam problemas nas funções de sleep e wakeup devido à bugs nos drivers É necessário muito código de suporte para codificar um driver É necessário conhecimento muito avançado do WDM mesmo para criar drivers muito simples

I/O Request Packet O IRP é uma estrutura de dados criada pelo I/O System onde ele armazena todas as informações necesárias para realizar a operação O IRP contém informações sobre qual a rotina Dispatch que será chamada do driver (create, read, write, close...), informações do status da operação (que vai sendo atualizada conforme o andamento) e também contém ponteiros para estruturas importantes que serão utilizadas no processo

Exemplo da hierarquia

Estrutura de um driver

DriverEntry A principal função dessa rotina é informar ao I/O System os ponteiros para as funções que o driver irá implementar extern "C" NTSTATUS DriverEntry(IN PDRIVER_OBJECT DriverObject, IN PUNICODE_STRING RegistryPath) { DriverObject->DriverUnload = DriverUnload; DriverObject->DriverExtension->AddDevice = AddDevice; DriverObject->MajorFunction[IRP_MJ_PNP] = DispatchPnp; DriverObject->MajorFunction[IRP_MJ_POWER] = DispatchPower; DriverObject->MajorFunction[IRP_MJ_SYSTEM_CONTROL] = DispatchWmi; servkey.buffer = (PWSTR) ExAllocatePool(PagedPool, RegistryPath->Length + sizeof(wchar)); if (!servkey.buffer) return STATUS_INSUFFICIENT_RESOURCES; servkey.maximumlength = RegistryPath->Length + sizeof(wchar); RtlCopyUnicodeString(&servkey, RegistryPath); servkey.buffer[registrypath->length/sizeof(wchar)] = 0; } return STATUS_SUCCESS;

Driver Development Kit - DDK Ambiente utilizado para a compilação de drivers que possui diversas ferramentas utilitárias e exemplos funcionais para quase todos os tipos de drivers possíveis A maior parte dos desenvolvedores de drivers e inclusive a própria documentação do DDK aconselha que se inicie o desenvolvimento de um novo driver sempre a partir de um dos exemplos do DDK Download gratuito no site da Micro$oft Possui uma extensa e desorganizada documentação técnica sobre o desenvolvimento de drivers

Exemplo 1: Stupid driver O driver possui apenas as rotinas DriverEntry e DriverUnload Não realiza nenhuma operação, apenas é carregado e descarregado pelo sistema A configuração do driver é feita manualmente no register

Código do driver #include <ntddk.h> VOID OnDriverUnload(IN PDRIVER_OBJECT pdriverobject); NTSTATUS DriverEntry(IN PDRIVER_OBJECT pdriverobject, IN PUNICODE_STRING pusregistrypath) { DbgPrint("Carregando o driver!!\n"); //informando o endereço da rotina de unload pdriverobject->driverunload = OnDriverUnload; return STATUS_SUCCESS; } VOID OnDriverUnload(IN PDRIVER_OBJECT pdriverobject) { DbgPrint("Finalizando o driver...\n"); }