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 |
Header | wdfmemory.h (Wdf.h を含む) |
DDI コンプライアンス規則 | MdlAfterReqCompletedIntIoctlA(kmdf)、 MdlAfterReqCompletedIoctlA(kmdf)、 MdlAfterReqCompletedReadA(kmdf)、 MdlAfterReqCompletedWriteA(kmdf) |