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 |
---|---|
|
È stato rilevato un parametro non valido. |
|
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) |