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