次の方法で共有


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 注釈