EVT_WDF_OBJECT_CONTEXT_DESTROY 콜백 함수(wdfobject.h)

[KMDF 및 UMDF에 적용]

드라이버의 EvtDestroyCallback 이벤트 콜백 함수는 프레임워크 개체 삭제와 관련된 작업을 수행합니다.

구문

EVT_WDF_OBJECT_CONTEXT_DESTROY EvtWdfObjectContextDestroy;

void EvtWdfObjectContextDestroy(
  [in] WDFOBJECT Object
)
{...}

매개 변수

[in] Object

프레임워크 개체에 대한 핸들입니다.

반환 값

없음

설명

드라이버는 WDF_OBJECT_ATTRIBUTES 구조에서 EvtDestroyCallback 콜백 함수를 지정할 수 있습니다. 이 구조체는 WdfDeviceCreate와 같은 프레임워크 개체를 만드는 모든 프레임워크 메서드에 대한 입력으로 사용됩니다.

프레임워크는 개체의 참조 수가 0으로 감소된 후 EvtDestroyCallback 콜백 함수를 호출합니다. 프레임워크는 EvtDestroyCallback 콜백 함수가 반환된 직후 개체를 삭제합니다.

EvtDestroyCallback은 개체 컨텍스트에 액세스할 수 있지만 개체에서 메서드를 호출할 수는 없습니다.

드라이버가 개체에 대해 EvtCleanupCallback 콜백 함수와 EvtDestroyCallback 콜백 함수를 모두 제공하는 경우 프레임워크는 먼저 EvtCleanupCallback 콜백 함수를 호출합니다.

개체가 삭제되면 프레임워크는 개체의 자식도 삭제합니다. 프레임워크는 부모 개체의 EvtCleanupCallback 콜백 함수를 호출하기 전에 자식 개체의 EvtCleanupCallback 콜백 함수를 호출합니다. 다음으로, 자식의 참조 수가 0이면 프레임워크는 자식 개체의 EvtDestroyCallback 콜백 함수를 호출합니다. 마지막으로, 부모의 참조 수가 0이면 프레임워크는 부모 개체의 EvtDestroyCallback 콜백 함수를 호출합니다.

드라이버가 개체를 만들 때 개체별 메모리 버퍼를 할당하고 버퍼 포인터를 개체의 컨텍스트 공간에 저장하는 경우가 있습니다. 드라이버의 EvtCleanupCallback 또는 EvtDestroyCallback 콜백 함수는 이러한 메모리 버퍼의 할당을 취소할 수 있습니다.

프레임워크 개체 삭제에 대한 자세한 내용은 프레임워크 개체 수명 주기를 참조하세요.

일반적으로 프레임워크는 IRQL <= DISPATCH_LEVEL EvtDestroyCallback 콜백 함수를 호출합니다. 그러나 프레임워크는 다음과 같은 상황에서 IRQL = PASSIVE_LEVEL 콜백 함수를 호출합니다.

  • 개체의 핸들 형식은 WDFDEVICE, WDFDRIVER, WDFDPC, WDFINTERRUPT, WDFIOTARGET, WDFQUEUE, WDFSTRING, WDFTIMER 또는 WDFWORKITEM입니다.
  • 개체의 핸들 형식은 WDFMEMORY 또는 WDFLOOKASIDE이고 드라이버는 PoolType 매개 변수의 PagedPoolWdfMemoryCreate 또는 WdfLookasideListCreate로 지정했습니다.
프레임워크 버전 1.9부터 wdfroletypes.h 헤더 파일에는 EvtDestroyCallback 콜백 함수에 대한 몇 가지 대체 개체 형식별 함수 형식이 포함되어 있습니다. 이러한 대체 형식은 드라이버가 콜백 함수를 제대로 사용하고 있는지 여부를 확인하는 데 도움이 되는 확인 도구입니다. 다음 표를 사용하여 사용할 함수 유형을 결정합니다.
개체 유형 함수 유형
디바이스 개체 EVT_WDF_DEVICE_CONTEXT_DESTROY
I/O 큐 개체 EVT_WDF_IO_QUEUE_CONTEXT_DESTROY_CALLBACK
File 개체 EVT_WDF_FILE_CONTEXT_DESTROY_CALLBACK
기타 모든 개체 EVT_WDF_OBJECT_CONTEXT_DESTROY

요구 사항

요구 사항
대상 플랫폼 유니버설
최소 KMDF 버전 1.0
최소 UMDF 버전 2.0
머리글 wdfobject.h(Wdf.h 포함)
IRQL 설명 섹션을 참조하십시오.

추가 정보

EvtCleanupCallback

WDF_OBJECT_ATTRIBUTES