WdfObjectAllocateContext 함수(wdfobject.h)
[KMDF 및 UMDF에 적용]
WdfObjectAllocateContext 메서드는 지정된 프레임워크 개체에 대한 컨텍스트 공간을 할당합니다.
구문론
NTSTATUS WdfObjectAllocateContext(
[in] WDFOBJECT Handle,
[in] PWDF_OBJECT_ATTRIBUTES ContextAttributes,
[out] PVOID *Context
);
매개 변수
[in] Handle
프레임워크 개체에 대한 핸들입니다.
[in] ContextAttributes
컨텍스트 공간을 설명하는 호출자 제공 WDF_OBJECT_ATTRIBUTES 구조체에 대한 포인터입니다.
[out] Context
할당된 컨텍스트 공간에 대한 포인터를 받는 위치에 대한 포인터입니다.
반환 값
WdfObjectAllocateContext 작업이 성공하면 STATUS_SUCCESS 반환합니다. 그렇지 않으면 이 메서드는 다음 값 중 하나를 반환할 수 있습니다.
반환 코드 | 설명 |
---|---|
|
잘못된 매개 변수가 검색되었습니다. |
|
지정한 ContextAttributes 매개 변수가 유효하지 않은 WDF_OBJECT_ATTRIBUTES 구조체의 ContextTypeInfo 멤버입니다. |
|
컨텍스트 공간을 할당할 수 없습니다. |
|
드라이버는 ContextAttributes가 지정하는 WDF_OBJECT_ATTRIBUTES 구조체의 ContextTypeInfo 멤버와 일치하는 컨텍스트 공간을 이미 할당. 이 경우 Context 매개 변수의 포인터는 기존 컨텍스트 공간에 대한 포인터를 수신하며 중복 컨텍스트 공간을 할당하지 않습니다. |
|
Handle 매개 변수가 지정하는 개체가 삭제되고 있습니다. 이 경우 프레임워크는 컨텍스트 공간을 할당하지 않습니다. |
이 메서드는 다른NTSTATUS 값을 반환할 수도 있습니다.
드라이버에서 잘못된 개체 핸들을 제공하면 버그 검사가 수행됩니다.
비고
일반적으로 드라이버는 WdfDeviceCreate같은 프레임워크 개체의 생성 메서드를 호출할 때 WDF_OBJECT_ATTRIBUTES 구조를 지정하여 개체 컨텍스트 공간을 만듭니다.
드라이버가 일부 개체에 둘 이상의 컨텍스트 공간을 할당하도록 하려면 드라이버가 개체의 생성 메서드를 호출한 후 WdfObjectAllocateContext 한 번 이상 호출할 수 있습니다. WdfObjectAllocateContext 대한 각 호출은 다른 컨텍스트 형식을 지정해야 합니다. (WDF_OBJECT_ATTRIBUTES 구조체의 ContextTypeInfo 멤버는 컨텍스트 형식을 식별합니다.
드라이버가 지정된 개체에 대해 WdfObjectAllocateContext 두 번 이상 호출하는 경우 각 컨텍스트에 대해 별도의 EvtCleanupCallback 및 EvtDestroyCallback 콜백 함수를 제공할 수 있습니다.
WdfObjectAllocateContext호출하는 경우 WDF_OBJECT_ATTRIBUTES 구조에서 ParentObject 지정하지 마세요.
프레임워크에서 개체에 대한 컨텍스트 공간을 할당하면 컨텍스트 공간도 0으로 초기화됩니다.
개체 컨텍스트 공간에 대한 자세한 내용은 Framework 개체 컨텍스트 공간참조하세요.
프레임워크 개체 계층 구조에 대한 정리 규칙에 대한 자세한 내용은 Framework 개체 수명 주기참조하세요.
예시
다음 코드 예제에서는 요청 개체에 대한 컨텍스트 공간을 만듭니다. 컨텍스트 공간은 예제의 REQUEST_CONTEXT 구조를 기반으로 합니다.
typedef struct _REQUEST_CONTEXT {
WDFMEMORY InputMemoryBuffer;
WDFMEMORY OutputMemoryBuffer;
} REQUEST_CONTEXT, *PREQUEST_CONTEXT;
PREQUEST_CONTEXT reqContext = NULL;
WDF_OBJECT_ATTRIBUTES attributes;
WDF_OBJECT_ATTRIBUTES_INIT_CONTEXT_TYPE(
&attributes,
REQUEST_CONTEXT
);
status = WdfObjectAllocateContext(
Request,
&attributes,
&reqContext
);
요구 사항
요구 사항 | 가치 |
---|---|
대상 플랫폼 | 보편적 |
최소 KMDF 버전 | 1.0 |
최소 UMDF 버전 | 2.0 |
헤더 | wdfobject.h(Wdf.h 포함) |
라이브러리 | Wdf01000.sys(KMDF); WUDFx02000.dll(UMDF) |
IRQL | <=DISPATCH_LEVEL |
DDI 규정 준수 규칙 | DriverCreate(kmdf) |