驱动程序的 DMA IO 错误_Kernel_IoGetDmaAdapter_注释
使用_Kernel_IoGetDmaAdapter_批注指示代码分析工具查找 DMA 指针的滥用情况。
如果函数调用使用_Kernel_IoGetDmaAdapter_注释批注的接口,则它应具有重试逻辑,以便重试,直到函数成功。
IoGetDmaAdapter 例程返回的寄存器数可能少于请求的寄存器数,并且调用方需要继续使用实际数字,而不是请求的号码。
_Must_inspect_result_
_IRQL_requires_max_(PASSIVE_LEVEL)
NTKERNELAPI
struct _DMA_ADAPTER *
IoGetDmaAdapter(
_In_opt_ PDEVICE_OBJECT PhysicalDeviceObject, // required for PnP drivers
_In_ struct _DEVICE_DESCRIPTION *DeviceDescription,
_Out_ _When_(return!=0, _Kernel_IoGetDmaAdapter_ _At_(*NumberOfMapRegisters, _Must_inspect_result_))
PULONG NumberOfMapRegisters
...