WDF_MEMORY_DESCRIPTOR_INIT_MDL-Funktion (wdfmemory.h)
[Gilt für KMDF und UMDF]
Die WDF_MEMORY_DESCRIPTOR_INIT_MDL-Funktion initialisiert eine WDF_MEMORY_DESCRIPTOR-Struktur , sodass sie eine angegebene Speicherdeskriptorliste (MDL) beschreibt.
Syntax
void WDF_MEMORY_DESCRIPTOR_INIT_MDL(
[out] PWDF_MEMORY_DESCRIPTOR Descriptor,
[in] PMDL Mdl,
[in] ULONG BufferLength
);
Parameter
[out] Descriptor
Ein Zeiger auf eine WDF_MEMORY_DESCRIPTOR Struktur.
[in] Mdl
Ein Zeiger auf eine MDL, die einen Puffer beschreibt.
[in] BufferLength
Die Größe des Puffers, den Mdl angibt, in Bytes.
Rückgabewert
Keine
Bemerkungen
Die WDF_MEMORY_DESCRIPTOR_INIT_MDL-Funktion nullt die angegebene WDF_MEMORY_DESCRIPTOR-Struktur und legt das Element Type der Struktur auf WdfMemoryDescriptorTypeMdl fest. Anschließend werden die Elemente u.MdlType.Mdl und u.MdlType.BufferLength der Struktur auf die Werte festgelegt, die vom Mdl - bzw. BufferLength-Parameter angegeben werden.
Beispiele
Im folgenden Codebeispiel wird ein Puffer zugewiesen, eine MDL für den Puffer erstellt und die MDL verwendet, um eine WDF_MEMORY_DESCRIPTOR Struktur zu initialisieren.
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
);
Anforderungen
Anforderung | Wert |
---|---|
Zielplattform | Universell |
KMDF-Mindestversion | 1.0 |
UMDF-Mindestversion | 2.0 |
Kopfzeile | wdfmemory.h (einschließen von Wdf.h) |
DDI-Complianceregeln | MdlAfterReqCompletedIntIoctlA(kmdf), MdlAfterReqCompletedIoctlA(kmdf), MdlAfterReqCompletedReadA(kmdf), MdlAfterReqCompletedWriteA(kmdf) |