Partilhar via


Especificando uma função de descarga

Um driver de texto explicativo deve fornecer uma função de descarga. O sistema operativo chama esta função quando o driver de chamada é descarregado do sistema. A função de descarregamento de um driver de callout deve garantir que os callouts do driver de callout sejam desregistrados do mecanismo de filtro antes que o driver de callout seja descarregado da memória do sistema. Um driver de callout não pode ser descarregado do sistema se 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 Modelo de Driver do Windows (WDM) ou nas Estruturas de Driver do Windows (WDF).

WDM-Based Elementos de destaque

Se um driver de callout for baseado no WDM, ele especificará uma função Unload na 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;

  ...
}

WDF-Based Anotações de Drivers

Se um driver de encapsulamento for baseado em WDF, ele especifica a função EvtDriverUnload na 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.