Condividi tramite


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

Vedi anche

WDF_OBJECT_ATTRIBUTES

WdfDriverCreate

WdfMemoryCreateFromLookaside