Partilhar via


Object-Based

O sistema operacional baseado no Microsoft Windows NT é baseado em objeto. Vários componentes no executivo definem um ou mais tipos de objetos. Cada componente exporta rotinas de suporte de modo kernel que manipulam instâncias de seus tipos de objeto. Nenhum componente pode acessar diretamente os objetos de outro componente. Para usar objetos de outro componente, um componente deve chamar as rotinas de suporte exportadas.

Este design permite que o sistema operacional seja portátil e flexível. Por exemplo, é possível que uma versão futura do sistema operacional contenha um componente de kernel recodificado que define os mesmos tipos de objeto, mas com estruturas internas totalmente diferentes. Se esta hipotética versão recodificada do kernel exporta um conjunto de rotinas de suporte que têm os mesmos nomes e parâmetros que o conjunto existente, as alterações internas não teriam efeito sobre a portabilidade de qualquer outro componente executivo no sistema existente.

Da mesma forma, para permanecerem portáteis e configuráveis, os drivers devem se comunicar com o sistema operacional e entre si usando apenas as rotinas de suporte e outras interfaces descritas no WDK.

Como o sistema operacional, os drivers também são baseados em objetos. Por exemplo:

  • Os objetos de arquivo representam a conexão de um aplicativo de modo de usuário a um dispositivo.

  • Os objetos de dispositivo representam os dispositivos lógicos, virtuais ou físicos de cada driver.

  • Os objetos de driver representam a imagem de carga de cada driver.

O gerenciador de E/S define a estrutura e as interfaces para objetos de arquivo, objetos de dispositivo e objetos de driver.

Como qualquer outro componente executivo, os drivers usam objetos chamando rotinas de suporte de modo kernel que o gestor de E/S e outros componentes do sistema exportam. As rotinas de suporte do modo kernel geralmente têm nomes que identificam o objeto específico que cada rotina manipula e a operação que cada rotina executa nesse objeto. Esses nomes de rotina de suporte têm a seguinte forma:

PrefixOperationObject

onde

Prefixo Identifica o componente de modo kernel que exporta a rotina de suporte e, geralmente, o componente que definiu o tipo de objeto. A maioria dos prefixos tem duas letras.

Funcionamento Descreve o que é feito com o objeto.

Objeto Identifica o tipo de objeto.

Por exemplo, a rotina IoCreateDevice do gerenciador de E/S cria um objeto de dispositivo para representar um dispositivo físico, lógico ou virtual como o destino das solicitações de E/S.

Um componente do sistema pode exportar rotinas que chamam as rotinas de suporte de outro componente. Isso pode reduzir o número de chamadas que um motorista deve fazer. O gestor de E/S, em particular, exporta certas rotinas que facilitam o desenvolvimento de drivers. Por exemplo, IoConnectInterruptEx, que os drivers de nível mais baixo chamam para registrar seus ISRs, chama as rotinas de suporte do kernel para objetos de interrupção.

Opacidade do objeto

Alguns objetos definidos pelo sistema são opacos: somente o componente do sistema definidor está ciente da estrutura interna de tal objeto e pode acessar diretamente todos os dados que um objeto contém. O componente do sistema que define uma exportação de objeto opaco suporta rotinas que os drivers e outros componentes do modo kernel podem chamar para manipular esse objeto. Os drivers nunca acessam estruturas de objetos opacas diretamente.

Observação Para manter a portabilidade do driver, os drivers devem usar as rotinas de suporte fornecidas pelo sistema para manipular objetos definidos pelo sistema. O componente de sistema definidor pode alterar a estrutura interna de seus tipos de objeto a qualquer momento.