Funzione WdfLookasideListCreate (wdfmemory.h)
[Si applica solo a KMDF]
Il metodo WdfLookasideListCreate crea un oggetto lookaside-list, da cui il driver può ottenere oggetti di memoria.
Sintassi
NTSTATUS WdfLookasideListCreate(
[in, optional] PWDF_OBJECT_ATTRIBUTES LookasideAttributes,
[in] size_t BufferSize,
[in] POOL_TYPE PoolType,
[in, optional] PWDF_OBJECT_ATTRIBUTES MemoryAttributes,
[in, optional] ULONG PoolTag,
[out] WDFLOOKASIDE *Lookaside
);
Parametri
[in, optional] LookasideAttributes
Puntatore a una struttura WDF_OBJECT_ATTRIBUTES che contiene gli attributi dell'oggetto per il nuovo oggetto lookaside-list. Questo parametro è facoltativo e può essere WDF_NO_OBJECT_ATTRIBUTES.
[in] BufferSize
Dimensione diversa da zero, in byte, del buffer allocato dal framework per ogni oggetto memoria.
[in] PoolType
Valore tipizzato POOL_TYPE che specifica il tipo di memoria da allocare.
[in, optional] MemoryAttributes
Puntatore a una struttura WDF_OBJECT_ATTRIBUTES che contiene gli attributi dell'oggetto per ogni oggetto memoria ottenuto dal driver dall'elenco lookaside. Questo parametro è facoltativo e può essere WDF_NO_OBJECT_ATTRIBUTES.
[in, optional] PoolTag
Tag del pool definito dal driver per il buffer di ogni oggetto memoria. I debugger visualizzano questo tag. I driver specificano in genere una stringa di caratteri con un massimo di quattro caratteri, delimitati da virgolette singole, in ordine inverso, ad esempio 'dcba'. Il valore ASCII di ogni carattere nel tag deve essere compreso tra 0 e 127. Il debug del driver è più semplice se ogni tag del pool è univoco.
Se PoolTag è zero, il framework fornisce un tag del pool predefinito che usa i primi quattro caratteri del nome del servizio in modalità kernel del driver. Se il nome del servizio inizia con "WDF" (il nome non fa distinzione tra maiuscole e minuscole e non include le virgolette), vengono usati i quattro caratteri successivi. Se sono disponibili meno di quattro caratteri, viene usato "FxDr".
Per KMDF versione 1.5 e successive, il driver può usare il membro DriverPoolTag della struttura WDF_DRIVER_CONFIG per specificare un tag del pool predefinito.
[out] Lookaside
Puntatore a una posizione che riceve un handle per il nuovo oggetto lookaside-list.
Valore restituito
WdfLookasideListCreate 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. |
|
Memoria insufficiente. |
Per un elenco di altri valori restituiti che il metodo WdfLookasideListCreate potrebbe restituire, vedere Errori di creazione di oggetti framework.
Questo metodo potrebbe anche restituire altri valori NTSTATUS.
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.
Per impostazione predefinita, il nuovo elemento padre dell'oggetto lookaside-list è l'oggetto driver del framework creato dal metodo WdfDriverCreate . È possibile utilizzare il membro ParentObject della struttura WDF_OBJECT_ATTRIBUTES per specificare un elemento padre diverso. Il framework elimina l'oggetto lookaside-list quando elimina l'oggetto padre. Se il driver non modifica l'elemento padre predefinito, il driver deve eliminare l'oggetto lookaside-list al termine dell'utilizzo dell'oggetto ; in caso contrario, l'oggetto lookaside-list rimarrà finché il gestore di I/O non scarica il driver.
Se il driver fornisce una struttura WDF_OBJECT_ATTRIBUTES per i parametri LookasideAttributes e MemoryAttributes e se entrambe le strutture specificano un oggetto dispositivo come oggetto padre, gli handle dell'oggetto dispositivo devono essere gli stessi.
Per altre informazioni sugli oggetti di memoria del framework e sugli elenchi lookaside, vedere Uso dei buffer di memoria.
Se il driver specifica PagedPool per il parametro PoolType , il metodo WdfLookasideListCreate deve essere chiamato in IRQL <= APC_LEVEL. In caso contrario, il metodo può essere chiamato in IRQL <= DISPATCH_LEVEL.
Esempio
Per un esempio di codice che usa WdfLookasideListCreate, vedere WdfMemoryCreateFromLookaside.
Requisiti
Requisito | Valore |
---|---|
Piattaforma di destinazione | Universale |
Versione KMDF minima | 1,0 |
Intestazione | wdfmemory.h (include Wdf.h) |
Libreria | Wdf01000.sys (vedere Controllo delle versioni della libreria framework). |
IRQL | Vedere la sezione Osservazioni. |
Regole di conformità DDI | DriverCreate(kmdf), KmdfIrql(kmdf), KmdfIrql2(kmdf), KmdfIrqlExplicit(kmdf) |