我正在使用 PREFast 检查 Windows7 的一些驱动程序代码构建。以下代码行
stackDeviceObject = IoAttachDeviceToDeviceStack(deviceObject, PhysicalDeviceObject);
发出警告:
warning 28107: The Memory 'deviceObject' must be held when calling 'IoAttachDeviceToDeviceStack'.
deviceObject 是通过先前调用 IoCreateDevice 获得的。有谁知道这个警告意味着什么以及如何摆脱它?
PREfast 帮助说“调用函数时程序在调用函数之前必须获取的资源没有获取。因此,函数调用将失败。”
帮助页面提供的示例围绕在对 KaEnterCriticalRegion 和 KaLeaveCriticalRegion 的调用之间对 ExAcquireResourceLite 和 ExReleaseResourceLite (给出此警告)的一对调用,然后据说可以消除警告,但我不知道如何将此信息应用于我对 IoAttachDeviceToDeviceStack 的调用。
任何意见,将不胜感激。