驱动程序的 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

...

Windows 驱动程序的 SAL 2.0 注释