다음을 통해 공유


언로드 함수 지정

콜아웃 드라이버는 언로드 함수를 제공해야 합니다. 운영 체제는 콜아웃 드라이버가 시스템에서 언로드될 때 이 함수를 호출합니다. 설명선 드라이버의 언로드 함수는 설명선 드라이버가 시스템 메모리에서 언로드되기 전에 설명선 드라이버의 설명선이 필터 엔진에서 등록 취소되도록 보장해야 합니다. 언로드 함수를 제공하지 않는 경우 시스템에서 콜아웃 드라이버를 언로드할 수 없습니다.

설명선 드라이버가 언로드 함수를 지정하는 방법은 설명선 드라이버가 WDM(Windows 드라이버 모델) 또는 WDF(Windows 드라이버 프레임워크)를 기반으로 하는지 여부에 따라 달라집니다.

WDM-Based 콜아웃 드라이버

설명선 드라이버가 WDM을 기반으로 하는 경우 DriverEntry 함수에서 Unload 함수를 지정합니다. 예:

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 콜아웃 드라이버

설명선 드라이버가 WDF를 기반으로 하는 경우 DriverEntry 함수에서 EvtDriverUnload 함수를 지정합니다. 예:

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;
}

설명선 드라이버의 언로드 함수를 구현하는 방법에 대한 자세한 내용은 설명선 드라이버 언로드를 참조하세요.