Compartilhar via


Bibliotecas e cabeçalhos

Os drivers de modo kernel usam as rotinas de serviços do sistema nativo chamando os pontos de entrada Nt e Zw na DLL (biblioteca de vínculo dinâmico) Ntoskrnl.exe. Essa DLL contém as implementações reais dessas rotinas. Para acessar esses pontos de entrada, um driver vincula estaticamente à biblioteca Ntoskrnl.lib, que está disponível no WDK (Kit de Driver do Windows). As rotinas implementadas em Ntoskrnl.lib são stubs que vinculam dinamicamente aos pontos de entrada no Ntoskrnl.exe em tempo de execução.

A documentação do WDK descreve alguns, mas não todos, dos pontos de entrada do Zw no Ntoskrnl.exe. Para obter descrições das rotinas Zw que podem ser chamadas por drivers, consulte Rotinas ZwXxx.

A maioria das rotinas Zw documentadas são definidas no arquivo de cabeçalho Wdm.h no WDK, mas algumas são definidas em outros arquivos de cabeçalho, como Ntddk.h e Ntifs.h.

Normalmente, os aplicativos de modo de usuário não chamam as rotinas Nt e Zw . Em vez disso, um aplicativo pode chamar uma rotina Win32, como CreateFile, que chama uma rotina de serviços do sistema nativo, como NtCreateFile ou ZwCreateFile, para executar a operação solicitada. No entanto, um aplicativo de modo de usuário pode chamar diretamente uma rotina Nt ou Zw para executar uma operação que não é compatível com as rotinas do Win32.

Os aplicativos de modo de usuário usam as rotinas de serviços do sistema nativo chamando os pontos de entrada no Ntdll.dll biblioteca de vínculo dinâmico. Esses pontos de entrada convertem chamadas em rotinas Nt e Zw em chamadas do sistema que estão presas no modo kernel. Para acessar esses pontos de entrada, um aplicativo de modo de usuário vincula estaticamente à biblioteca Ntdll.lib, que está disponível no WDK. As rotinas implementadas em Ntdll.lib são stubs que vinculam dinamicamente aos pontos de entrada em Ntdll.dll em tempo de execução.

A documentação do SDK do Windows descreve alguns, mas não todos, dos pontos de entrada Nt em Ntdll.lib. A maioria das rotinas Nt documentadas são definidas no arquivo de cabeçalho Winternl.h no SDK do Windows. Esta documentação faz pouco menção dos pontos de entrada do Zw e nenhum arquivo de cabeçalho no SDK do Windows contém definições de rotinas Zw.

Com algumas exceções secundárias, cada ponto de entrada em Ntdll.dll para uma rotina Nt tem um ponto de entrada correspondente para uma rotina Zw . A documentação do WDK e do SDK do Windows recomenda que os desenvolvedores de aplicativos evitem chamar pontos de entrada Nt não documentados e avisa que os pontos de entrada do Zw podem desaparecer de Ntdll.dll em uma versão futura do Windows. Os desenvolvedores de aplicativos que chamam as rotinas Zw do modo de usuário devem estar preparados para essa ocorrência.

Para obter descrições das rotinas Nt que podem ser chamadas por aplicativos, consulte Winternl, winternl.h header e Miscellaneous Low-Level Client Support. Algumas páginas de referência para rotinas Nt na documentação do SDK do Windows rotulam as rotinas como "preteridas" e aconselham os leitores a usar as rotinas equivalentes do Win32 em vez das rotinas Nt preteridas.

Um aplicativo de modo de usuário não pode chamar os pontos de entrada no Ntoskrnl.exe e um driver de modo kernel não pode chamar os pontos de entrada no Ntdll.dll.