WDF_MEMORY_DESCRIPTOR_INIT_MDL関数 (wdfmemory.h)
[KMDF と UMDF に適用]
WDF_MEMORY_DESCRIPTOR_INIT_MDL 関数は、指定されたメモリ記述子リスト (MDL) を記述するように、WDF_MEMORY_DESCRIPTOR 構造体を初期化します。
構文
void WDF_MEMORY_DESCRIPTOR_INIT_MDL(
[out] PWDF_MEMORY_DESCRIPTOR Descriptor,
[in] PMDL Mdl,
[in] ULONG BufferLength
);
パラメーター
[out] Descriptor
WDF_MEMORY_DESCRIPTOR 構造体へのポインター。
[in] Mdl
バッファーを記述する MDL へのポインター。
[in] BufferLength
Mdl が指定 バッファーのサイズ (バイト単位)。
戻り値
なし
注釈
WDF_MEMORY_DESCRIPTOR_INIT_MDL 関数は、指定した WDF_MEMORY_DESCRIPTOR 構造体をゼロにし、構造体の Type メンバーを WdfMemoryDescriptorTypeMdl に設定します。 次に、構造体の u.MdlType.Mdl と u.MdlType.BufferLength メンバーをそれぞれ、Mdl パラメーターと BufferLength パラメーターで指定 値に設定します。
例示
次のコード例では、バッファーを割り当て、バッファーの MDL を作成し、MDL を使用して WDF_MEMORY_DESCRIPTOR 構造体を初期化します。
PVOID pBuffer = NULL;
PMDL pMdl = NULL;
pBuffer = ExAllocatePoolWithTag(
NonPagedPool,
BUFFER_LENGTH,
IOTARGET_DRIVER_TAG
);
if (pBuffer == NULL){
Status = STATUS_UNSUCCESSFUL;
goto Cleanup;
}
pMdl = IoAllocateMdl(
pBuffer,
BUFFER_LENGTH,
FALSE,
TRUE,
NULL
);
if (pMdl == NULL){
Status = STATUS_UNSUCCESSFUL;
goto Cleanup;
}
MmBuildMdlForNonPagedPool(pMdl);
WDF_MEMORY_DESCRIPTOR_INIT_MDL(
pInputBuffer,
pMdl,
BUFFER_LENGTH
);
必要条件
要件 | 価値 |
---|---|
ターゲット プラットフォーム の | 普遍 |
最小 KMDF バージョン | 1.0 |
UMDF の最小バージョン を する | 2.0 |
ヘッダー | wdfmemory.h (Wdf.h を含む) |
DDI コンプライアンス規則 を する | MdlAfterReqCompletedIntIoctlA(kmdf), MdlAfterReqCompletedIoctlA(kmdf), MdlAfterReqCompletedReadA(kmdf), MdlAfterReqCompletedWriteA(kmdf) |
こちらもご覧ください
ExAllocatePoolWithTag の
IoAllocateMdl の