Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Em drivers WDM e baseados em framework, a função DriverEntry é o ponto de entrada principal. O protótipo da função é o mesmo em ambos os modelos. Em um driver WDM, o sistema chama DriverEntry quando o driver é carregado pela primeira vez na memória. DriverEntry define um ponteiro para a rotina dedoAddDevice do driver no campo DriverExtension->AddDevice da estrutura DRIVER_OBJECT, define ponteiros para suas rotinas de despacho de E/S na matriz MajorFunction do MajorFunction da estrutura DRIVER_OBJECT e, em seguida, retorna. Em um driver baseado em framework, o sistema chama a função interna FxDriverEntry ao carregar o driver. Essa função interna inicializa o framework e, em seguida, chama a função DriverEntry do driver. DriverEntry define um ponteiro para o do driver EvtDriverDeviceAdd retorno de chamada e chama WdfDriverCreate para criar o objeto WDFDRIVER, como mostra o exemplo a seguir:
NTSTATUS
DriverEntry(
IN PDRIVER_OBJECT DriverObject
IN PUNICODE_STRING RegistryPath
)
{
WDF_DRIVER_CONFIG config;
WDF_DRIVER_CONFIG_INIT( &config,
ToasterEvtDeviceAdd );
status = WdfDriverCreate(
DriverObject,
RegistryPath,
WDF_NO_OBJECT_ATTRIBUTES,
&config,
WDF_NO_HANDLE
);
return STATUS_SUCCESS;
}
DriverEntry também inicializa quaisquer dados ou recursos globais que o driver exige, como a criação de uma lista lookaside ou a inicialização do rastreamento. Observe que, embora WdfDriverCreate retorne um identificador para o objeto WDFDRIVER, o driver não conserva esse identificador, assim como um driver WDM pode não conservar o ponteiro DRIVER_OBJECT que foi passado para a sua rotina DriverEntry. O motivo é o mesmo: apenas alguns drivers usam o ponteiro para o objeto driver.