MmGetMdlVirtualAddress マクロは、MDL によって記述されたバッファーのベース仮想アドレスを返します。
構文
#define MmGetMdlVirtualAddress(Mdl) \
((PVOID) ((PCHAR) ((Mdl)->StartVa) + (Mdl)->ByteOffset))
パラメーター
[in] Mdl
初期仮想アドレスを返すバッファーを記述する MDL へのポインター。
戻り値
MmGetMdlVirtualAddress は、MDL によって記述されたバッファーのベース仮想アドレスを返します。
備考
mmGetMdlVirtualAddress は、MDL の開始仮想アドレスを返します。
mmGetMdlVirtualAddress は、現在のスレッド コンテキストで必ずしも有効ではない仮想アドレスを返します。 下位レベルのドライバーは、返された仮想アドレスを使用してメモリ (特にユーザーのメモリ領域) にアクセスしようとしないでください。
返されるアドレスは、MDL 内の物理アドレス エントリのインデックスとして使用され、MapTransfer入力できます。
MmGetMdlVirtualAddress の呼び出し元は、任意の IRQL で実行できます。 通常、呼び出し元は IRQL = DISPATCH_LEVEL で実行されています。このルーチンは、MapTransfer をするために CurrentVa パラメーターを取得するために一般的に呼び出されるためです。
必要条件
| 要件 | 価値 |
|---|---|
| サポートされる最小クライアント | Windows 2000 |
| ヘッダー | wdm.h |
| IRQL | 任意のレベル (「解説」を参照) |
| DDI コンプライアンス規則 を する | MdlAfterReqCompletedIntIoctlA(kmdf)、 MdlAfterReqCompletedIoctlA(kmdf)、 MdlAfterReqCompletedReadA(kmdf)、 MdlAfterReqCompletedWriteA(kmdf) |