WDF_DECLARE_CONTEXT_TYPE & WDF_DECLARE_CONTEXT_TYPE_WITH_NAME

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


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值