Condividi tramite


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 che chiama WdfMemoryCreatePreallocated.

Sintassi

NTSTATUS WdfMemoryAssignBuffer(
  [in] WDFMEMORY Memory,
  [in] PVOID     Buffer,
  [in] size_t    BufferSize
);

Parametri

[in] Memory

Handle per un oggetto memoria framework ottenuto chiamando WdfMemoryCreatePreallocated.

[in] Buffer

Puntatore a un buffer fornito dal driver.

[in] BufferSize

Dimensioni diverse da zero, in byte, del buffer a cui buffer punta.

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.

Osservazioni:

Il metodo può assegnare un buffer a un oggetto memoria che WdfMemoryCreatePreallocated creato, ma non a un oggetto memoria che WdfMemoryCreate creato.

Buffer a cui può essere allocato il parametro buffer dal pool di memoria visualizzabile o non paging. 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 < DISPATCH_LEVEL IRQL. Si noti che il driver EvtCleanupCallback e EvtDestroyCallback funzioni di callback, se specificato, può essere chiamato in IRQL <= DISPATCH_LEVEL.

Per altre informazioni sugli oggetti di memoria del framework, vedere Using Memory Buffers.

Esempi

Nell'esempio di codice seguente viene allocato un buffer e quindi viene assegnato il buffer a un oggetto memoria 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 minima di KMDF 1.0
versione minima di UMDF 2.0
intestazione wdfmemory.h (include Wdf.h)
Biblioteca 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)

Vedere anche

ExAllocatePoolWithTag

WdfMemoryCreatePreallocated