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
STATUS_INVALID_PARAMETER
È 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)

Vedi anche

ExAllocatePoolWithTag

WdfMemoryCreatePreallocated