Funzione WdfMemoryAssignBuffer (wdfmemory.h)
[Si applica a KMDF e UMDF]
Il metodo WdfMemoryAssignBuffer assegna un buffer specificato a un oggetto memoria creato da un driver chiamando WdfMemoryCreatePreallocated.
Sintassi
NTSTATUS WdfMemoryAssignBuffer(
[in] WDFMEMORY Memory,
[in] PVOID Buffer,
[in] size_t BufferSize
);
Parametri
[in] Memory
Handle per un oggetto memoria del framework ottenuto chiamando WdfMemoryCreatePreallocated.
[in] Buffer
Puntatore a un buffer fornito dal driver.
[in] BufferSize
Dimensione diversa da zero, in byte, del buffer a cui punta Buffer .
Valore restituito
WdfMemoryAssignBuffer restituisce STATUS_SUCCESS se l'operazione ha esito positivo. In caso contrario, questo metodo potrebbe restituire uno dei valori seguenti:
Codice restituito | Descrizione |
---|---|
|
È stato rilevato un parametro non valido. |
Questo metodo potrebbe anche restituire altri valori NTSTATUS.
Se il driver fornisce un handle di oggetto non valido, si verifica un controllo di bug.
Commenti
Il metodo può assegnare un buffer a un oggetto memoria creato da WdfMemoryCreatePreallocated , ma non a un oggetto memoria creato da WdfMemoryCreate .
Buffer che il parametro Buffer punta a può essere allocato dal pool di memoria pagable o non pagable. Se il driver alloca il buffer dal pool di paging o se il buffer proviene da un'applicazione in modalità utente, il driver deve accedere al buffer solo in IRQL < DISPATCH_LEVEL. Si noti che le funzioni di callback EvtCleanupCallback e EvtDestroyCallback del driver, se specificato, possono essere chiamate in IRQL <= DISPATCH_LEVEL.
Per altre informazioni sugli oggetti di memoria del framework, vedere Uso dei buffer di memoria.
Esempio
Nell'esempio di codice seguente viene allocato un buffer e quindi viene assegnato il buffer a un oggetto memoria del framework.
PVOID pNewBuffer = NULL;
pNewBuffer = ExAllocatePoolWithTag(
NonPagedPool,
NEW_BUFFER_SIZE,
MY_DRIVER_TAG
);
if (pNewBuffer == NULL){
goto Error;
}
status = WdfMemoryAssignBuffer(
memHandle,
pNewBuffer,
NEW_BUFFER_SIZE
);
Requisiti
Requisito | Valore |
---|---|
Piattaforma di destinazione | Universale |
Versione KMDF minima | 1.0 |
Versione UMDF minima | 2,0 |
Intestazione | wdfmemory.h (include Wdf.h) |
Libreria | Wdf01000.sys (KMDF); WUDFx02000.dll (UMDF) |
IRQL | Qualsiasi livello |
Regole di conformità DDI | BufAfterReqCompletedIntIoctlA(kmdf), BufAfterReqCompletedIoctlA(kmdf), BufAfterReqCompletedReadA(kmdf), BufAfterReqCompletedWriteA(kmdf), DriverCreate(kmdf), MemAfterReqCompletedIntIoctlA(kmdf), MemAfterReqCompletedIoctlA(kmdf), MemAfterReqCompletedReadA(kmdf), MemAfterReqCompletedWriteA(kmdf) |