Funzione WdfMemoryCreateFromLookaside (wdfmemory.h)

[Si applica solo a KMDF]

Il metodo WdfMemoryCreateFromLookaside crea un oggetto memoria del framework e ottiene un buffer di memoria da un elenco lookaside specificato.

Sintassi

NTSTATUS WdfMemoryCreateFromLookaside(
  [in]  WDFLOOKASIDE Lookaside,
  [out] WDFMEMORY    *Memory
);

Parametri

[in] Lookaside

Handle per un oggetto lookaside-list ottenuto chiamando WdfLookasideListCreate.

[out] Memory

Puntatore a una posizione che riceve un handle al nuovo oggetto memoria del framework.

Valore restituito

WdfMemoryCreateFromLookaside restituisce STATUS_SUCCESS se l'operazione ha esito positivo. In caso contrario, questo metodo restituisce uno dei valori seguenti:

Codice restituito Descrizione
STATUS_INVALID_PARAMETER
È stato rilevato un parametro non valido.
STATUS_INSUFFICIENT_RESOURCES
Memoria insufficiente.
 

Questo metodo potrebbe restituire anche altri valori NTSTATUS.

Un controllo di bug si verifica se il driver fornisce un handle di oggetti non valido.

Commenti

Dopo che il driver chiama WdfLookasideListCreate per creare un oggetto lookaside-list, il driver può chiamare WdfMemoryCreateFromLookaside per ottenere un buffer dall'elenco lookaside.

Il framework fornisce un handle a un oggetto memory che rappresenta il buffer. Quando il framework crea l'oggetto memory, usa gli attributi dell'oggetto forniti dal driver quando viene chiamato WdfMemoryCreateFromLookaside.

Al termine dell'uso di un oggetto memoria ottenuto da un elenco lookaside, il driver deve chiamare WdfObjectDelete per restituire l'oggetto memoria all'elenco lookaside.

Per altre informazioni sugli oggetti di memoria del framework e sugli elenchi lookaside, vedere Uso di buffer di memoria.

Se i buffer lookaside-list vengono allocati dal pool di memoria paginabile, il metodo WdfMemoryCreateFromLookaside deve essere chiamato in IRQL <= APC_LEVEL. In caso contrario, il metodo può essere chiamato in IRQL <= DISPATCH_LEVEL.

Esempio

Nell'esempio di codice seguente viene creato un elenco lookaside e viene archiviato l'handle dell'elenco nello spazio di contesto dell'oggetto dispositivo definito dal driver. Il driver ottiene quindi un buffer dall'elenco lookaside.

PDRIVER_CONTEXT  driverContext;
WDFMEMORY  memHandle;

driverContext = GetDriverContext(driver);

status = WdfLookasideListCreate(
                                WDF_NO_OBJECT_ATTRIBUTES,
                                sizeof(MY_LOOKASIDE_BUFFER),
                                NonPagedPool,
                                WDF_NO_OBJECT_ATTRIBUTES,
                                MY_POOL_TAG,
                                &driverContext->LookasideListHandle
                                );
...
status = WdfMemoryCreateFromLookaside(
                                      driverContext->LookasideListHandle,
                                      &memHandle
                                      );

Requisiti

Requisito Valore
Piattaforma di destinazione Universale
Versione KMDF minima 1.0
Intestazione wdfmemory.h (include Wdf.h)
Libreria Wdf01000.sys (vedere Framework Library Versioning).
IRQL Vedere La sezione Osservazioni.
Regole di conformità DDI DriverCreate(kmdf)

Vedi anche

WdfLookasideListCreate

WdfMemoryCreate

WdfMemoryCreatePreallocated

WdfObjectDelete