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 매개 변수의 PagedPool을 WdfMemoryCreate 또는 WdfLookasideListCreate로 지정했습니다.
개체 유형 | 함수 유형 |
---|---|
디바이스 개체 | 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 | 설명 섹션을 참조하십시오. |