次の方法で共有


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))。

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

typedef ULONG PFN_NUMBER, *PPFN_NUMBER;

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

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

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

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

必要条件

要件 価値
ヘッダー wdm.h (Wdm.h を含む)
IRQL 任意のレベル
DDI コンプライアンス規則 する MdlAfterReqCompletedIntIoctlA(kmdf), MdlAfterReqCompletedIoctlA(kmdf), MdlAfterReqCompletedReadA(kmdf), MdlAfterReqCompletedWriteA(kmdf)