次の方法で共有


MmGetMdlPfnArray マクロ (wdm.h)

MmGetMdlPfnArray は、メモリ記述子リスト (MDL) に関連付けられている物理ページ番号の配列の先頭へのポインターを返すマクロです。

構文

PPFN_NUMBER MmGetMdlPfnArray(
  _In_ PMDL Mdl
);

パラメーター

Mdl

MDL へのポインター。

戻り値

MmGetMdlPfnArray は、MDL に関連付けられている物理ページ番号の配列の先頭へのポインターを返します。

注釈

MmGetMdlPfnArray は、MDL に関連付けられている物理ページ番号の配列の先頭へのポインターを返します。

マクロ定義:

#define MmGetMdlPfnArray(Mdl) ((PPFN_NUMBER)(Mdl + 1))

配列内のエントリの数は ADDRESS_AND_SIZE_TO_SPAN_PAGES(MmGetMdlVirtualAddress(Mdl)、MmGetMdlByteCount(Mdl)) です。

各配列要素は、次のように Wdm.h ヘッダー ファイルで定義されるPFN_NUMBER型の整数値です。

typedef ULONG PFN_NUMBER, *PPFN_NUMBER;

配列の内容を変更すると、診断が困難な微妙なシステム問題が発生する可能性があります。 この配列の内容を読み取ったり、変更したりしないことをお勧めします。

ページング可能なメモリの場合、配列の内容は MmProbeAndLockPages でロックされているバッファーに対してのみ有効です。

非ページ プールの場合、配列の内容は MmBuildMdlForNonPagedPoolMmAllocatePagesForMdlExMmAllocatePagesForMdl のいずれかで更新された MDL に対してのみ有効です。

MDL の詳細については、「MDL の使用」を参照してください。

要件

要件
Header wdm.h (Wdm.h を含む)
IRQL 任意のレベル
DDI コンプライアンス規則 MdlAfterReqCompletedIntIoctlA(kmdf), MdlAfterReqCompletedIoctlA(kmdf), MdlAfterReqCompletedReadA(kmdf), MdlAfterReqCompletedWriteA(kmdf)