WDF_DECLARE_CONTEXT_TYPE
WDF_DECLARE_CONTEXT_TYPE宏为指定对象创建一个访问上下文空间方法的名字。
void WDF_DECLARE_CONTEXT_TYPE(
_contexttype
);
参数
-
_contexttype
- 驱动定义结构的符号名。这个接口必须描述对象上下文空间。
示例
以下代码示例定义了一个作为请求对象上下文结构(MY_REQUEST_CONTEXT)。注册这个结构体,然后调用WDF_DECLARE_CONTEXT_TYPE宏。这个宏创建一个访问这个对象上下文的方法WdfObjectGet_MY_REQUEST_CONTEXT。
typedef struct _MY_REQUEST_CONTEXT { LIST_ENTRY ListEntry; WDFMEMORY Memory; } MY_REQUEST_CONTEXT, *PMY_REQUEST_CONTEXT; WDF_DECLARE_CONTEXT_TYPE(MY_REQUEST_CONTEXT)
以下示例代码创建一个请求对象,然后使用WdfObjectGet_MY_REQUEST_CONTEXT(最后一行)访问方法去获取指向这个对象上下文空间的指针。
WDFREQUEST Request;
WDF_OBJECT_ATTRIBUTES MyRequestObjectAttributes;
PMY_REQUEST_CONTEXT pMyContext;
WDF_OBJECT_ATTRIBUTES_INIT(&MyRequestObjectAttributes);
WDF_OBJECT_ATTRIBUTES_SET_CONTEXT_TYPE(
&MyRequestObjectAttributes,
MY_REQUEST_CONTEXT
);
status = WdfRequestCreate(
&MyRequestObjectAttributes
NULL,
&Request
);
if (!NT_SUCCESS(status)) {
return status;
}
pMyContext = WdfObjectGet_MY_REQUEST_CONTEXT(Request);
WDF_DECLARE_CONTEXT_TYPE_WITH_NAME
WDF_DECLARE_CONTEXT_TYPE_WITH_NAME宏创建一个驱动程序指定名的对象上下文的访问方法。语法
void WDF_DECLARE_CONTEXT_TYPE_WITH_NAME(
_contexttype,
_castingfunction
);
参数
-
_contexttype
-
驱动定义结构的符号名。这个接口必须描述对象上下文空间。
_castingfunction
-
一个C语言程序名,这个宏使用这个名字作所创建对象上下文的访问方法。
示例
以下示例代码定义了一个请求对象的上下文结构体(MY_REQUEST_CONTEXT),然后示例调用WDF_DECLARE_CONTEXT_TYPE_WITH_NAME宏注册这个结构体并且指定上下文访问方法为RequestGetMyContext。
typedef struct _MY_REQUEST_CONTEXT {
LIST_ENTRY ListEntry;
WDFMEMORY Memory;
} MY_REQUEST_CONTEXT, *PMY_REQUEST_CONTEXT;
WDF_DECLARE_CONTEXT_TYPE_WITH_NAME(MY_REQUEST_CONTEXT, RequestGetMyContext)
以下示例代码创建一个请求对象,然后使用
RequestGetMyContext(最后一行)访问方法获取这个对象的上下文空间的指针。
WDFREQUEST Request;
WDF_OBJECT_ATTRIBUTES MyRequestObjectAttributes;
PMY_REQUEST_CONTEXT pMyContext;
WDF_OBJECT_ATTRIBUTES_INIT(&MyRequestObjectAttributes);
WDF_OBJECT_ATTRIBUTES_SET_CONTEXT_TYPE(
&MyRequestObjectAttributes,
MY_REQUEST_CONTEXT
);
status = WdfRequestCreate(
&MyRequestObjectAttributes
NULL,
&Request
);
if (!NT_SUCCESS(status)) {
return status;
}
pMyContext = RequestGetMyContext(Request);