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 驱动定义结构的符号名。这个接口必须描述对象上下文空间。

WDF_DECLARE_CONTEXT_TYPE_WITH_NAME

WDF_DECLARE_CONTEXT_TYPE_WITH_NAME宏创建一个驱动程序指定名的对象上下文的访问方法。

void WDF_DECLARE_CONTEXT_TYPE_WITH_NAME(
     _contexttype,
     _castingfunction
);

参数

_contexttype 驱动定义结构的符号名。这个接口必须描述对象上下文空间。
_castingfunction 一个C语言程序名,这个宏使用这个名字作所创建对象上下文的访问方法。

示例

头文件定义

typedef struct _DEVICE_CONTEXT
{
	WDFUSBDEVICE UsbDevice;
	WDFUSBINTERFACE  UsbInterface;
	WDFUSBPIPE       BulkReadPipe;
	WDFUSBPIPE       BulkWritePipe;

	ULONG PrivateDeviceData;  // just a placeholder

} DEVICE_CONTEXT, *PDEVICE_CONTEXT;
WDF_DECLARE_CONTEXT_TYPE_WITH_NAME(DEVICE_CONTEXT, DeviceGetContext)

函数中调用

WDF_OBJECT_ATTRIBUTES   deviceAttributes;
PDEVICE_CONTEXT deviceContext;
WDFDEVICE device;
NTSTATUS status;
WDF_OBJECT_ATTRIBUTES_INIT_CONTEXT_TYPE(&deviceAttributes, DEVICE_CONTEXT);
status = WdfDeviceCreate(&DeviceInit, &deviceAttributes, &device);  //_Inout_ PWDFDEVICE_INIT DeviceInit
if (NT_SUCCESS(status)) 
{
   deviceContext = DeviceGetContext(device);
   deviceContext->PrivateDeviceData = 0;
   if (NT_SUCCESS(status))
   {
        status = CcorePCIE2USBQueueInitialize(device);
   }
		status = WdfDeviceCreateDeviceInterface(
			device,
			&GUID_CLASS_CCID_BULK,
			NULL // ReferenceString);
}
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值