funzione WDF_MEMORY_DESCRIPTOR_INIT_MDL (wdfmemory.h)
[Si applica a KMDF e UMDF]
La funzione WDF_MEMORY_DESCRIPTOR_INIT_MDL inizializza una struttura WDF_MEMORY_DESCRIPTOR in modo da descrivere un elenco di descrittori di memoria specificato (MDL).
Sintassi
void WDF_MEMORY_DESCRIPTOR_INIT_MDL(
[out] PWDF_MEMORY_DESCRIPTOR Descriptor,
[in] PMDL Mdl,
[in] ULONG BufferLength
);
Parametri
[out] Descriptor
Puntatore a una struttura WDF_MEMORY_DESCRIPTOR .
[in] Mdl
Puntatore a un MDL che descrive un buffer.
[in] BufferLength
Dimensioni, in byte, del buffer specificato da Mdl .
Valore restituito
nessuno
Osservazioni
La funzione WDF_MEMORY_DESCRIPTOR_INIT_MDL zero la struttura di WDF_MEMORY_DESCRIPTOR specificata e imposta il membro Type della struttura su WdfMemoryDescriptorTypeMdl. Imposta quindi i membri u.MdlType.Mdl.Mdl e u.MdlType.BufferLength sui valori specificati rispettivamente dai parametri Mdl e BufferLength.
Esempio
Nell'esempio di codice seguente viene allocato un buffer, viene creato un MDL per il buffer e viene usato MDL per inizializzare una struttura 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
);
Requisiti
Requisito | Valore |
---|---|
Piattaforma di destinazione | Universale |
Versione KMDF minima | 1.0 |
Versione UMDF minima | 2,0 |
Intestazione | wdfmemory.h (include Wdf.h) |
Regole di conformità DDI | MdlAfterReqCompletedIntIoctlA(kmdf), MdlAfterReqCompletedIoctlA(kmdf), MdlAfterReqCompletedReadA(kmdf), MdlAfterReqCompletedWriteA(kmdf) |