Archive for the ‘Off Topic’ Category

DriverEntry.com.br dá as caras

4 de March de 2008

Olá pessoal, prometo que este post vai ser curtinho. Essa notícia é para os escovadores de bit de plantão.

No próximo dia 29 de março, acontecerá o Quarto Encontro de Programadores que é organizado pelo grupo de C/C++ Brasil.

O evento vai trazer uma série de palestras com verdadeiras autoridades no assunto. Acho que o único ilustre desconhecido serei eu mesmo. Fui convidado para falar um pouco sobre arquitetura e desenvolvimento de drivers para Windows.

Se você não tem a menor idéia de como os drivers são organizados e de como você pode construí-los, então esta é sua chance de continuar assim, mas com uma boa oportunidade de ver outras excelentes palestras. Já dei alguns treinamentos, mas não posso dizer que tenho grandes experiências com palestras. Acho que a maior palestra que já dei era composta por um público de aproximadamente de três pessoas. Isso contando com a minha mãe que ficava o tempo todo me mandando calar a boca pra ela poder ouvir a novela.

De qualquer forma vou me esforçar para não fazer feio por lá. Felizmente meu amigo Strauss, que por sinal será um dos palestrantes, me deu uma forcinha publicando este post com dicas para palestrantes.

Até mais…

Seminários OSR em casa

15 de January de 2008

Se um dos problemas que impediam você de fazer um treinamento especializado em desenvolvimento de device drivers na OSR era o fato de ter medinho de voar, então seus pobremas se acabaram-se. A OSR, depois de anos e anos de experiência ensinando a escrever drivers, agora investe nos Webinars. Essa novidade já está anunciada desde o dia 4 de janeiro, mas ainda causa surpresa quando comento com algumas pessoas. Assim, resolvi colocar esse post e tentar repassar a novidade para mais pessoas de uma só vez.

 

Mais barato?

A vantagem financeira está no fato de evitar de comprar as passagens aéreas e pagar a hospedagem de uma semana nos Estados Unidos. Tá, tudo bem, não é você quem vai pagar mesmo, mas pense que nem todos trabalham em empresas multi-nacionais com milhares de dólares destinados a treinamentos de funcionários. Quando fiz o treinamento na OSR, tudo foi pago pela empresa onde eu trabalhava, mas se eu colocar tudo na ponta do lápis, foram cerca de R$13000 de investimento para participar de um seminario de U$2350, que na cotação de hoje seriam traduzidos em aproximadamente R$4143, ou seja, aproximadamente um terço do valor total. Isso pode simplesmente ser o fator que vai impedir você de fazer o treinamento. Então, você já pode ir correndo dizer pro papai e pra mamãe que eles agora têm mais poder aquisitivo para treinar você. Mas não três vezes mais. Pelo que me parece, os Webinars são relativamente mais caros que os seminários convecionais. O seminário que participei teve duração de 32 horas e abordava o desenvolvimento de drivers de File System (um assunto um cadim avançado), enquanto O primeiro webinar oferecido pela OSR fará uma rápida introdução ao WDF durante 20 horas pelo mesmo preço.

Outras vantagens

Um outro ponto bastante relevante é o fato de não ter que se ausentar de sua casa ou da empresa que você trabalha durante o seminário. Algumas das pessoas com quem conversei a respeito, me disseram que um grande problema é o fato de ter que sair de casa durante uma semana inteira. Alguns deles têm filhos pequenos ou outros tantos motivos que você pode imaginar, mas creio que o motivo mais comum que pode prender o profissional, são os intermináveis pepinos inadiáveis que só você pode resolver. Bom pelo menos este webinar é composto por 5 aulas de 4 horas. Isso permite que você cuide de sua pequena hortinha de pepinos enquanto participa dos treinamentos.

Não é apenas um ppt bem caro

Ao contrário do que se pode imaginar, os seminários serão interativos utilizando conexões de duas vias onde o participante poderá, além de receber todas as instruções ao vivo, fazer perguntas e ainda receber todo o material impresso como nos outros seminários. O interessado no webinar fará o download da ferramenta que estabelece a conexão e participará de uma sessão de 15 minutos para testar o computador que será usado nas sessões, e assim, certificar-se de que o participante não terá qualquer problema durante o treinamento.

Agora, se sua empresa não quiser mesmo pagar um treinamento pra você, já fica pelo menos mais fácil pagar por você mesmo e poder usar isso como uma nova estrelinha em seu currículo.
Até mais!

E o pulso ainda pulsa

4 de January de 2008

Antes de completar três meses sem qualquer sinal de vida, aqui estou a dar uma espiada no que ocorre na blogosfera. Este final de ano foi realmente corrido. Como já devem saber, minha ida para IBM contribuiu um pouco para esta minha ausência. Tudo bem, a faculdade também ajudou bastante, no finalzinho do ano reservei um tempo para mim mesmo e fui dar uma passeada na praia. Mas vamos deixar de conversa mole e ir ao que interessa.

Neste post, de volta ao mundo dos vivos, vou comentar apenas pequenas coisas e deixar para depois (mas ainda para esta vida) um post mais elaborado, como os que vocês estão acostumados a ver por aqui.

Debug em Free

Uma das coisas que tive que aprender a conviver na IBM é a depurar o driver que escrevemos sempre com o Build Free, ou seja, com otimizações e tudo mais que uma compilação release merece. Eu bem que tentei relutar dizendo que é importante que tenhamos uma versão checked para testes e que seria valioso poder rodar nosso driver com todos os ASSERT‘s ligados e verificando qualquer coisa fora do normal que possa ocorrer. Mas acreditem, não é fácil convencer este povo que entre Indianos e Norte-Americanos já estão acostumados com essa situação. Foi procurando boas justificativas para termos uma versão checked utilizável que encontrei este post. Pois é, as justificativas são realmente muito boas, mas ainda defendo que deveriamos ter uma versão checked. Estou preparando um post que fala um pouco sobre isso.

Por falar em saber inglês

Alguns posts antes deste, eu falei do MSDN traduzido para algumas linguas, incluindo o português. O recado foi que, dá pra se virar um pouquinho sem saber inglês, mas se você ainda não sabe e pretende desenvolver drivers para viver, então trate de aprender o quanto antes. Me lembrei deste post hoje quando numa pesquisa do Google um link foi especialmente gratificante.

Dicas do IoGetDeviceObjectPointer

Bom, se alguém conseguiu pegar alguma dica, por favor me passe. Se um dia eu resolver aprender uma terceira lingua, agora já tenho uma candidata.

Ano novo cara nova

Era para ter acontecido antes, mas infelizmente o tempo é curto para muitas pessoas. Coloquei em prova as habilidades de web designer do meu irmão para dar um tapa no layout do meu blog. Está ficando muito bom, mas ainda não tenho nada de concreto para mostrar. Estarei migrando para o WordPress em pouco tempo. Uma boa parte do trabalho já foi feito, mas ainda há muito a ser feito. Minha principal intenção em migrar para o WordPress é poder utilizar um destes plug-ins que permitem que eu tenha o mesmo post tanto em inglês como em português. Bom, um dos poucos que testamos ainda deu problema. Mas vamos chegar lá.

Até mais mais…

IBM, Here we go!

15 de October de 2007
Depois de alguns meses em um longo processo seletivo, finalmente já posso compartilhar essa boa notícia com vocês. Boa notícia para mim pelo menos. Hoje, dia 15 de outubro 2007 foi meu primeiro dia como IBMista no prédio da rua Tutóia. Não, eu não desisti do Kernel do Windows para programar Java nem vou programar ABAP. O negócio é o de sempre, tela azul mesmo.

Como você aprendeu isso?

Essa é uma pergunta que várias pessoas já me fizeram. Parece brincadeira, mas parece que as coisas têm contribuído naturalmente para o meu desenvolvimento profissional como programador Kernel para Windows. Quando eu era estagiário na Provectus, comecei a ler o livro “Desvendando o Windows NT” por puro hobby, sem a menor esperança de um dia poder trabalhar com as coisas abordadas por aquela literatura, afinal de contas, ter o privilégio de trabalhar em uma empresa de desenvolvimento de hardware no Brasil seria como ganhar na loteria. Bom, meu estágio como programador C foi em uma empresa que desenvolvia seu próprio hardware. Sorte talvez. Quando menos esperei, lá estava eu programando serviços para Windows NT, utilizando memória compartilhada e até um device driver apareceu pra eu dar uma olhada. Como eu já sabia alguma coisa de MFC e Win32 API, o que me atraía mesmo era o desenvolvimento em Kernel Mode. Mais uma vez por hobby, comecei a ler a respeito, sem esperanças devo dizer, apenas por prazer mesmo. É, desta vez o resultado foi contrário e fui trabalhar em uma empresa de compra e venda de ações da bolsa de valores para desenvolver compotentes COM+ em c++. Um ano foi o bastante para aprender o suficiente de ASP, SQL e Java para saber que não era aquilo que eu queria para mim. Felizmente o destino me trouxe a SCUA. Eu nem sabia que eles faziam drivers para Windows. Foi durante uma entrevista para fazer parte do time de aplicações que descobri que havia um time de drivers. Enfim, adivinha em qual time fui parar depois de um tempo. Lá tive contato com profissionais da área, muitos livros, listas de discussão e principalmente a oportunidade de por em prática o que eu aprendia nos livros. Depois veio a Tempest e com ela as chances de fazer um treinamento de File System Drivers em uma das maiores autoridades no assunto. Em seguida um amigo me indicou na IBM, e depois de duas entrevistas no prédio da rua Tutóia e uma entrevista técnica por telefone com o time dos Estados Unidos, bem aqui estou eu. Vou trabalhar no time de desenvolvimento do MVFS para Windows.

Um dos pontos que mais me anima nesta nova empreitada é a oportunidade de trabalhar com pessoas altamente qualificadas no assunto e poder aprender muito com um time que envolve minimamente americanos, indianos, e agora mais um brasileiro.

Meu primeiro dia de IBM foi cheio de palestras. Inicialmente sobre a história da IBM, e as outras foram mais sobre os vários procedimentos internos que uma empresa deste porte exige.

Inté mais…

Mais contatos

28 de September de 2007

Tem se tornado mais freqüente, pelo menos pra mim, a procura por desenvolvedores especializados em Kernel do Windows. O que é freqüente para mim? Bom, além das empresas que presto consultoria regularmante e que imagino já estarem cansados de me perguntar se conheço mais programadores de Kernel, duas empresas me pediram indicações somente neste último mês. Uma delas é a empresa que está levando um dos meus amigos, Rodrigo Strauss, para Porto Alegre. Mais difícil que encontrar vagas para este tipo de desenvolvimento, é encontrar desenvolvedores para este tipo de vaga. Normalmente quando alguém me pede uma indicação, acabo dizendo que depois de mais de dez anos de expericênia como programador, posso contar todos que conheço utilizando apenas uma das mãos.

O fato é que ambos são difíceis de encontrar, assim, estou me dispondo a encaminhar convites e oportunidades da área de Kernel Windows aos leitores deste blog que se interessarem. Os interessados devem entrar em contato por e-mail para que eu possa expandir essa nossa rede de contatos. Tentem evitar deixar endereços de e-mail na área de comentários do post, pois deste modo qualquer um (incluindo spammers) podem ver seus e-mails. Se você ainda não tem meu endereço de e-mail, basta obté-lo no meu pefil do Blogger. Mesmo quem não estiver interessado em novos desafios, pode mandar um olá. Assim vou poder saber quantos de vocês já trabalham com Kernel de Windows e tentar começar a utilizar os dedos da outra mão nessa contagem.

Uma iniciativa parecida com esta está no site da OSR Online, onde diversas empresas deixam vagas especializadas em Kernel de Windows. Quem sabe daqui a uns cem anos, quando meu blog estiver mundialmente famoso, empresas queiram publicar vagas para programadores de Kernel do Brasil aqui no DriverEntry.com.br.

Por enquanto gostaria apenas de sabem quantos são e quem são os Kernel Coders brasileiros, mas estarei aberto a sugestões. Tudo vai depender do volume e da quantidade de respostas que vou obter nessa minha tentativa.

Até mais…

Mais ieu num sei Ingrêis

27 de September de 2007

Foi através deste post que fiquei sabendo que já está disponível para navegação o beta do conteúdo do MSDN (incluindo o WDK) traduzido automáticamente para Português e outras línguas.

Para os que têm problemas em entender o texto original em Inglês, agora podem desfrutar de todo o conforto de ter os mesmos problemas em entender o texto agora em Português. Isso porque a tradução automática fica aquela beleza, mas já ajuda para quem tem pouco ou nenhum Inglês.

O resultado é exibido no já conhecido layout do MSDN, mas o texto principal virá com um split que irá separar o texto em Português do seu equivalente em Inglês. Talvez isso fique melhor quando deixar de ser beta, mas de qualquer forma, não deixa de ser uma alternativa.

Dê uma olhadinha:
Introdução do kit de drivers do Windows

Traduções automáticas podem ser bem engraçadas. Já vi traduções nojentas em manuais de produtos importados. É uma pena eu não ter encontrado aquele manual do PenDrive que comprei há pouco tempo para poder compartilhar algumas pérolas.

Device Driver Programming == Motorista de dispositivo programando

Be careful!

Personal Gina Tabajara

8 de August de 2007

Em conseqüência à volta às aulas na faculdade, meu tempo para escrever posts já diminuiu, e mais uma vez, vocês vão ter que tolerar um post que não fala nada sobre drivers. Na verdade, foi enquanto eu escrevia um post sobre drivers que escrevi esta Gina de exemplo. Mas depois de ouvir meus amigos, Lesma e Thiago, falarem que eu deveria deixar esse tal post de forma pudesse ser aplicado ao Windows Vista. Sabendo que ginas não são mais suportadas pelo Windows Vista, então a gina acabou ficando de lado. Tadinha… Enfim, como achei que o resultado ficou no mínimo divertido, vou deixar aqui esta Gina Stub (incluindo os fontes) que permite que mudemos o título dos diálogos apresentados.

O que é uma Gina Stub?

Seria melhor ainda dizer o que é Gina. Já escrevi algumas poucas coisas a respeito de Ginas no post que fala como utilizar o SoftIce, mas de forma resumida, Gina é o compomente do sistema que implementa a interface gráfica para a autenticação dos usuários em uma estação. Quer mais resumido ainda? É a telinha de logon do sistema. A gina é responsável por receber os dados que identificam o usuário e os repassam para os componentes que podem validar a senha e gerar o token com as credenciais deste usuário. É a partir deste token que é criada a sessão onde o usuário está se logando e onde será criado seu desktop. A gina também implementa a interface que faz a troca de senha, bloqueio e o shutdown da estação. Não vou detalhar todos estes passos aqui, tudo está explicado na documentação do Platform SDK.

A gina original do Windows está implementada em na DLL de nome MsGina.dll que está no diretório System32 do Windows. Para implementar uma nova gina, você precisa criar uma nova DLL e informar ao sistema que esta DLL será a nova gina através de uma chave no registro. Mas criar uma gina não é algo tão simples assim. Já desenvolvi algumas e digamos que a documentação deixou um pouco a desejar. Pelo menos foi assim naquela época. A gina tem muitas responsabilidades e se você quer apenas complementar ou alterar algum comportamento da gina original, você poderia simplesmente criar uma gina stub. Gina Stub é uma DLL que exporta todas funções que uma gina deveria exportar, mas esta repassa as chamadas para a gina original do sistema, dando assim a opção que alterar apenas as funcionalidades desejadas.

Isso não é um tutorial

Se você quer saber como desenvolver uma gina stub e precisa de um ponto de partida, então vá até à pasta de exemplos do Platform SDK e utilize o exemplo da pasta C:\MSSDK\Samples\Security\GINA\GinaStub. O projeto que estou deixando aqui realiza alguns malabarismos para evitar código muito repetitivo e também não utiliza a C/C++ Run Time para poder ser compilada em Visual Studio 2005 e ainda assim poder rodar em Windows NT 4.0.

Instalando a Gina

Para cadastrar uma gina, você deve criar um valor chamado GinaDLL na chave Winlogon do registro, conforme mostra a figura abaixo. Esse valor é consultado pelo Winlogon.exe e caso este valor não exista, a gina padrão é carregada. O valor GinaTitle deve conter a mensagem que será exibida no título dos diálogos. Este valor não tem nada a ver com o Windows, é a nossa gina stub quem lê este valor. Junto dos arquivos fontes disponíveis para download no final deste post, existe um arquivo de script do registro que configura estas chaves para facilitar a sua vida.


Copie o arquivo Gina.dll para o diretório System32 do Windows. Certifique-se que de tudo está certo antes de reiniciar a máquina e fazer com que estas alterações tenham efeito. Caso algo esteja errado e o Winlogon.exe não consiga carregar a gina, a janela abaixo é exibida antes de qualquer coisa.


Até que o design deste MessageBox melhorou bastante a partir do Windows 2000. Se o mesmo problema acontecesse com o Windows NT 4.0, a seguinte mensagem seria exibida.

Duas dicas úteis para gina coders

Escrever ginas é a oportunidade que programadores User-Mode têm de gerar suas próprias telas azuis. Sua DLL é carregada pelo Winlogon.exe, e assim, é executada no address space deste processo. Isso significa que se você tiver uma excessão não tratada, isso vai derrubar este processo. O Winlogon é um processo crítico e não pode ser derrubado. Resumindo, tela azul.

A próxima dica é meio café com leite, mas vale a pena ser comentada. Durante o processo de desenvolvimento da gina, é natural ter vários builds e a necessidade se substituir a gina que está sendo utilizada no momento sempre aparece. Você já deve ter tentado sobrescrevê-la, mas como o Winlogon.exe está sempre com ela carregada, você não consegue apagar a gina atual. Como qualquer DLL nestas condições, você pode renomeá-la mesmo enquanto está sendo utilizada pelo Winlogon. Isso permite colocar uma nova versão da gina no diretório System32 sem ter que apagar a versão que está sendo executada no momento. Quando o sistema reiniciar, o Winlogon vai pegar a gina nova e largar a velha.

Espero que tenham gostado do brinquedinho. Agora preciso continuar aquele post.
Have fun!

TitleGina.zip

ExAllocatePool with Tagging

19 de July de 2007

Meu amigo Lesma sempre me foi uma excelente referência sobre uma maneira diferente de ver as coisas. Ele normalmente tem um ponto de vista diferente do meu, e sempre aprendo com estes outros pontos de vista. Este post será diferente do que estão acostumados a ver por aqui. Wanderley introduziu o assunto “Como ser um melhor programador nos próximos seis meses” e nos trouxe este novo ponto de vista (pelo menos para mim) de ver os blogs, conhecido como Tagging. Aqui segue a minha resposta.

Não posso dizer que nos próximos seis meses tudo vai ser diferente, que eu realmente vou me esforçar ao máximo para me tornar um programador melhor. Creio que minha resposta seja parecida com a resposta que o Strauss nos deu, mas não igual.

Como alguns de vocês sabem, além jornada de trabalho na Open, ainda enfrento a Universidade para concluir minha formação em Engenharia da Computação. Este curso tem me trazido assuntos novos com relação a micro processamento, sistemas embutidos, arquitetura de computadores e outros assuntos diferentes de programação Windows em C/C++. Posso dizer que isso tem aberto um pouco meu leque de oportunidades para aprender coisas novas. Desenvolver drivers é, além de programar, estabelecer a comunicação entre dois universos próximos, mas praticamente desconhecidos entre si. Normalmente que faz muito bem um lado, não consegue fazer o outro tão bem. Isso é natural. Já conheço um pouco de software, e a cada seis meses que se passam, vou conhecendo algumas coisas novas sobre hardware. Conhecendo melhor o hardware, creio poder entender e programar melhor o sistema operacional que interage com ele.

Por falar em coisas novas, este mês me peguei comprando um livro sobre device drivers para Linux. Tenho sido Microsoft desde sempre. Obviamente estou me referindo ao aspecto profissional. Meus tempos de MSX e CP200 exercem a mesma influência que meu jardim de infância excerce sobre meu cirrículo. O livro ainda não chegou, mas com certeza vai alimentar minha base de dados sobre interação Software/Hardware e me permitir traçar um paralelo entre as duas plataformas de desenvolvimento Windows/Linux, e assim, poder entender melhor o que eles tem em comum, tanto com relação à interação Software/Hardware quanto aos conceitos de sistemas operacionais.

Um amigo uma vez me disse que uma das melhores maneiras de aprender é ensinando. Já escrevo este blog a quase 1 ano e tenho aprendido bastante com ele. Escrever sobre algumas coisas que eu considerava simples me fez dar mais uma olhada e ver que ainda existem mais e mais detalhes sobre o assunto. Desta forma, acabo aprendendo os detalhes que foram perdidos à primeira vista. Algumas palestras que tenho dado na empresa e o curso de device drivers são um Boost para esta maneira de aprender. Confesso que estou gostando disso.

Concluindo e resumindo, vou continuar estudando para terminar minha faculdade, ler sobre Linux e continuar blogando e sendo questionado sobre os assuntos. Esse assunto é muito divertido para programadores, mas não podemos nos esquecer que também somos maridos, filhos, irmãos, amigos e assim por diante. Este post pode lhe oferecer aquele ânimo para sair estudando tudo e dedicar todo o seu tempo disponível em prol de ser um programador exemplar. Andar de bicicleta e ir à praia também fazem parte da formação de programadores excelentes.

Aprecie com moderação. 😉
Até mais…

Agora ele só fala disso…

21 de May de 2007

As inscrições para o curso de drivers para Windows já começaram a operar nesse final de semana. Por causa de alguns atrasos, o início do curso foi adiado e também já foi confirmado para o dia 23 de junho.

Para ver a lista completa de cursos de extensão oferecidos pela universidade, selecione o ítem “Tecnologia da informação” do menu “Extensão” no site da Universidade.

Para quem curte a criação de Pingüins, o hard coder e amigo William, estará dando um curso de desenvolvimento de drivers para Linux na mesma universidade. Ele também utilizará um dos hardwares de treinamentos da OSR, que aparece na foto acima, para dar a oportunidade de pôr a mão na massa. No caso do curso de Linux, o hardware utilizado será o de USB.

Até mais…

Curso de drivers para Windows

10 de May de 2007

Como alguns de vocês puderam ler em um outro post, fui convidado pela Universidade Gama Filho a ministrar um curso de desenvolvimento em Kernel Mode para Windows. Já foram fechados os detalhes do curso que darei e já estariam produzindo o material para a divulgação, mas enquanto este post era escrito, fui notificado de que ocorreu um atraso na produção deste material e que estaria disponível a partir do dia 21 de maio. Já dei uma olhada no Folder que eles estão produzindo, e pelo que vi, resolveram resumir a descrição do curso que darei. Por esta razão, vou colocar a versão completa da descrição aqui. Segue o arquivo que enviei para a universidade.

Objetivo:
==========
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. O objetivo deste curso é preparar os
alunos que querem entender, testar, complementar ou construir drivers para
Windows empregando os conceitos gerais envolvidos durante o processo.
 
 
Pré-requisitos:
==================
Conhecimento da linguagem C
Básico de API Windows
Básico de Sistemas Operacionais
 
 
Tópicos abordados:
=====================
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
        Pilha de Drivers e Plug-and-Play
        Object Manager
                Terminal Server
        Camada de abstração de Hardware (HAL)
 
Ambiente (obtenção, instalação e utilização)
        Windows Device Driver Kit
        Microsoft Visual Studio Express
        Microsoft Windows Debugging Tools
        Símbolos
 
Escrevendo um Driver
        Escrevendo DriverEntry e DriverUnload
        Compilando o Driver
        Instalando o Driver (Legacy)
                Dependências
                Grupos
                Load Order
        Depurando o Driver
                Instalações Checked Build
                Driver Verifier
                Mapeando imagem para depuração
                Utilizando Máquinas Virtuais
                SoftIce
        Criando DeviceObject
        Symbolic Links
        I/O Request Packets
        IOCTLs e DeviceIoControl
        Implementando Dispatch Routines
                Buffered I/O
                Direct I/O
                Neither I/O
        Objetos, Handles e Ponteiros
        Contexto Arbitrário
        IRQL's, APC's, DPC's e WorkItems
        Sincronismo
                Mutex
                FastMutex
                ERESOURCE
                Spin Lock
        Eventos e Timers
        Filas Personalizadas
 
Interações com Hardware
        Port I/O
        Interrupções e ISR's
        DMA
 
Escrevendo Filtros
        Escrevendo a rotina AddDevice
        Filtros para drivers Legacy
        Repassando IRPs
        Stack Locations
        Completion Routines
        Tratamento de IRPs Pendentes
        Cancelamento de IRPs
        Criando IRPs para outros Drivers
 
Tipos de Drivers
        Legacy drivers
        WDM Drivers
        Minidrivers
        Miniports
        Miniclass
 
Instalações
        Criando um arquivo .INF
        O uso da SetupApi
 
Referências
        Web sites
        Grupos de discussão
        Livros

Até o momento em que este post foi escrito, o atendimento da universidade não estava apto a fornecer detalhes sobre o curso, tais como data de inscrição, conteúdo ou mesmo calendário. Mas posso lhes adiantar o que estou sabendo até agora.

O curso terá duração de 40 horas, sendo distribuídas em 10 aulas de 4 horas cada. As aulas serão dadas aos sábados das 13:00 às 17:00.

O curso está marcado para ter sua primeira turma iniciando dia 26 de maio. Serão necessários no mínimo 5 alunos para formar uma turma, mas pela quantidade de pessoas que já entraram em contato buscando detalhes (mesmo sem divulgação), minha preocupação passa a ser o limite superior de 10 alunos. Resolvemos limitar a turma em 10 alunos para que houvesse um melhor aproveitamento do conteúdo.

Concordo que 40 horas é pouco para aprender tudo que é necessário para desenvolver drivers, mas já será um excelente ponto de partida para ter seu primeiro contato. Se você é do tipo de pessoa que precisa aprender absolutamente tudo para começar a desenvolver, então já vou lhe adiantando que este curso não é para você. Os maiores desenvolvedores de Kernel que eu conheço (de Blog, mas conheço), e que trabalham com isso a anos e anos, dizem que nunca sabem tudo. Para se ter uma idéia, alguns desenvolvedores focam apenas determinados assuntos dentro do Kernel. Um trabalha a 10 anos só com drivers de disco, um outro trabalha a 7 anos somente com drivers de rede. Tony Mason, por exemplo, trabalha a 18 anos só com File System Drivers. Agora pergunta pra eles se eles sabem tudo. E eu que, por uma época, me sentia mal por tentar me focar somente em trabalhos de Kernel e recusava trabalhos em User Mode. As vezes, em rodas de amigos, ouvia comentários de como fazer isso ou aquilo em .Net, e eu viajando na maionese. Eu mal sabia que dentro do assunto Kernel ainda existia uma infinidade de detalhes e especializações. Será possível aprender tudo?

Estou preparando o conteúdo de forma que os alunos possam ter pequenas experiências práticas, tais como escrever e compilar um driver “Hello World”, instalá-los em máquinas virtuais e depurá-los. Não tem jeito, tem que colocar a mão na massa. Conectar duas máquinas reais com um cabo serial e fazer Debug de Kernel. Gerar e analizar Crash Dumps. Penso que temos que tirar o máximo proveito do fato de estarmos juntos em uma sala aula, e realizar algumas experiências que os livros tentam descrever somente com palavras e figuras. É esta vontade de pôr as coisas em prática que contribuíram para que eu adquirisse o kit de treinamento à venda na OSR Online. O kit que estarei levando para o curso, e que aparece na foto acima, é basicamente uma placa PCI de I/O Digital. Meu objetivo é fazer com que drivers de alunos possam controlar este dispositivo.

Bom, à medida que eu for recebendo notícias, irei repassando a vocês.
Até mais.

Este post foi sobre um curso oferecido em um evento isolado. Caso você esteja interessado em treinamentos para desenvolvimento de drivers e software de baixo nível para Windows, dê uma olhada nesta página.