Especificando uma função unload
Um driver de texto explicativo deve fornecer uma função de descarregamento. O sistema operacional chama essa função quando o driver de texto explicativo é descarregado do sistema. A função de descarregamento de um driver de texto explicativo deve garantir que os textos explicativos do driver de texto explicativo não sejam registrados no mecanismo de filtro antes que o driver de texto explicativo seja descarregado da memória do sistema. Um driver de texto explicativo não poderá ser descarregado do sistema se ele não fornecer uma função de descarregamento.
Como um driver de texto explicativo especifica uma função de descarregamento depende se o driver de texto explicativo é baseado no WDM (Modelo de Driver do Windows) ou no WDF (Windows Driver Frameworks).
Drivers de texto explicativo do WDM-Based
Se um driver de texto explicativo for baseado no WDM, ele especificará uma função Unload em sua função DriverEntry . Por exemplo:
VOID
Unload(
IN PDRIVER_OBJECT DriverObject
);
NTSTATUS
DriverEntry(
IN PDRIVER_OBJECT DriverObject,
IN PUNICODE_STRING RegistryPath
)
{
...
// Specify the callout driver's Unload function
DriverObject->DriverUnload = Unload;
...
}
Drivers de texto explicativo do WDF-Based
Se um driver de texto explicativo for baseado no WDF, ele especificará uma função EvtDriverUnload em sua função DriverEntry . Por exemplo:
VOID
Unload(
IN WDFDRIVER Driver
);
NTSTATUS
DriverEntry(
IN PDRIVER_OBJECT DriverObject,
IN PUNICODE_STRING RegistryPath
)
{
NTSTATUS status;
WDF_DRIVER_CONFIG config;
WDFDRIVER driver;
...
// Initialize the driver config structure
WDF_DRIVER_CONFIG_INIT(&config, NULL);
// Indicate that this is a non-PNP driver
config.DriverInitFlags = WdfDriverInitNonPnpDriver;
// Specify the callout driver's Unload function
config.EvtDriverUnload = Unload;
// Create a WDFDRIVER object
status =
WdfDriverCreate(
DriverObject,
RegistryPath,
NULL,
&config,
&driver
);
...
return status;
}
Para obter informações sobre como implementar a função de descarregamento de um driver de texto explicativo, consulte Descarregando um driver de texto explicativo.