Freigeben über


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)

Weitere Informationen

ExAllocatePoolWithTag

IoAllocateMdl

MmBuildMdlForNonPagedPool

WDF_MEMORY_DESCRIPTOR

WDF_MEMORY_DESCRIPTOR_INIT_BUFFER

WDF_MEMORY_DESCRIPTOR_INIT_HANDLE