定义扩展结构
typedef struct _DRIVER_CONTEXT
{
ULONG Number;
WCHAR sz[1024];
ULONG Boolean;
}DRIVER_CONTEXT, *PDRIVER_CONTEXT;
//********* 申明一个函数GetDriverContext,用于访问该结构 在WDF驱动中必须这样做 访问方式下面介绍 *********
WDF_DECLARE_CONTEXT_TYPE_WITH_NAME(DRIVER_CONTEXT, GetDriverContext)
初始化对象
WDF_OBJECT_ATTRIBUTES DriverAttributes;
//该宏是吧扩展结构保到对象属性中
WDF_OBJECT_ATTRIBUTES_INIT_CONTEXT_TYPE(&DriverAttributes, DRIVER_CONTEXT);
创建带有扩展结构的对象
WdfDriverCreate(pDriverObject,
RegistryPath,
&DriverAttributes, //这了就指定了扩展结构,创建对象时,会分配一个内存来给扩展结构使用.
&WdfConfig,
&WdfDriver
);
访问扩展结构
WDFDEVICE Driver; //需要有这个对象才能访问到
PDRIVER_CONTEXT pDriverContext = GetDriverContext(Driver);
延伸
思考了一下,WDF驱动中,创建对象时,如果有WDF_OBJECT_ATTRIBUTES 类型的参数.,那么应该是可以用这种方式来访问扩展结构
创建设备函数WdfDeviceCreate的第二个参数就是上述类型,所以可以使用扩展结构来保存全局信息.