UMDF:在EVT_WDF_TIMER回调函数中访问设备注册表项

问题描述

我在使用UMDF驱动程序从return collection.find() .map(Document::toJson) .into(new ArrayList<>()); 回调函数检索设备注册表中存储的数据时遇到问题。这样的回调函数仅将EVT_WDF_TIMER 对象作为其唯一参数。为了能够访问UMDF中的注册表,WDFTIMER需要一个指向WdfDeviceOpenRegistryKey对象的指针。在调用回调函数之前,我的WDFDEVICEWDFTimer创建,它在计时器过去之后调用回调函数。我还提供了适当的WdfTimerCreate,其中一个属性WDF_OBJECT_ATTRIBUTES,我在其中分配了WDFOBJECT ParentObject对象。

现在,我希望可以检索在WDFDEVICE添加WDFDEVICE对象,但是似乎无法从WDF_OBJECT_ATTRIBUTES参数访问该对象。我不禁要问,有什么方法可以从WDFTIMER回调函数中检索指向WDFDEVICE的指针?

解决方法

您可以使用WdfTimerGetParentObject 来检索WDFOBJECT。