Condividi tramite


Funzione NdisInitializeNPagedLookasideList (ndis.h)

La funzione NdisInitializeNPagedLookasideList inizializza un elenco lookaside. Dopo aver completato l'inizializzazione, è possibile allocare blocchi fissi non di pagina e liberati dall'elenco lookaside.

Sintassi

void NdisInitializeNPagedLookasideList(
  [in]           PNPAGED_LOOKASIDE_LIST Lookaside,
  [in, optional] PALLOCATE_FUNCTION     Allocate,
  [in, optional] PFREE_FUNCTION         Free,
  [in]           ULONG                  Flags,
  [in]           SIZE_T                 Size,
  [in]           ULONG                  Tag,
  [in]           USHORT                 Depth
);

Parametri

[in] Lookaside

Puntatore a una struttura NPAGED_LOOKASIDE_LIST che contiene l'elenco lookaside fornito dal chiamante da inizializzare. La struttura deve essere allineata a 16 byte su piattaforme a 64 bit. Il driver deve fornire una testa elenco che è residente, ovvero nello spazio di sistema non a pagina.

[in, optional] Allocate

Punto di ingresso della funzionenull o specifica il punto di ingresso di una funzione Allocate fornita dal chiamante che allocherà una voce delle dimensioni specificate nel membro Size ogni volta che viene chiamata. Se Allocare è NULL, La funzione NdisAllocateFromNPagedLookasideList assegna successivamente voci per conto del chiamante. Se il chiamante fornisce una funzione Allocate , deve anche fornire una funzione Gratuita .

[in, optional] Free

Punto di ingresso della funzione null o specifica il punto di ingresso di una funzione free fornita dal chiamante che libera una voce delle dimensioni specificate nel membro Size ogni volta che viene chiamata. Se Free è NULL, La funzione NdisFreeToNPagedLookasideList libera successivamente le voci per conto del chiamante.

[in] Flags

Deve essere zero. Questo parametro è riservato.

[in] Size

Le dimensioni, in byte, di ogni voce da allocare successivamente dall'elenco lookaside.

[in] Tag

Tag del pool fornito dal chiamante per le voci di elenco lookaside. Il tag è una stringa di quattro caratteri delimitati da virgolette singole,ad esempio 'derF'. I caratteri vengono in genere specificati in ordine inverso in modo che siano più facili da leggere quando si scarica pool o tiene traccia dell'utilizzo del pool nel debugger.

[in] Depth

Deve essere zero. Questo parametro è riservato anche.

Valore restituito

nessuno

Osservazioni

NdisInitializeNPagedLookasideList inizializza la testa elenco fornita dal chiamante, ma non alloca memoria per le voci dell'elenco. Le voci iniziali vengono allocate in base alle esigenze con chiamate all'oggetto Funzione NdisAllocateFromNPagedLookasideList o dalla funzione di callbackallocata fornita dal driver nel parametro Allocate. L'elenco viene popolato come il driver libera le voci nell'elenco con Funzione NdisFreeToNPagedLookasideList . Le voci vengono raccolte nell'elenco fino a quando non viene raggiunto un limite di dimensioni dinamiche, ma determinato dal sistema. Quindi, tutte le voci in eccedenze nell'elenco lookaside vengono restituite al pool non di pagina, da NdisFreeToNPagedLookasideList o con chiamate alla funzione di callback gratuito fornita dal driver nel parametro Free .

Tutte le voci nell'elenco lookaside sono della stessa dimensione, specificata nel parametro Size . Un elenco lookaside è particolarmente utile per i driver che devono allocare dinamicamente e liberare aree di contesto di dimensioni fisse in cui mantenere lo stato di esecuzione delle operazioni di I/O in sospeso. Ad esempio, i driver NDIS orientati alla connessione possono trovare elenchi lookaside particolarmente utili perché tali driver in genere mantengono un set dinamico di aree di contesto per tenere traccia delle chiamate in uscita e in ingresso.

È più efficiente per un driver per consentire il NdisAllocateFromNPagedLookasideList e Funzioni NdisFreeToNPagedLookasideList per gestire l'allocazione e la deallocazione delle voci (vedere le funzioni ExAllocatePoolWithTag e ExFreePool ). Tuttavia, un driver che tiene traccia dello stato interno sull'utilizzo della memoria potrebbe fornire funzioni Allocate e Free a NdisInitializeNPagedLookasideList.

I chiamanti di NdisInitializeNPagedLookasideList devono essere in esecuzione in IRQL <= DISPATCH_LEVEL, ma in genere vengono eseguiti in PASSIVE_LEVEL.

Requisiti

Requisito Valore
Client minimo supportato Supportato per i driver NDIS 6.0 e NDIS 5.1 (vedere NdisInitializeNPagedLookasideList (NDIS 5.1) in Windows Vista. Supportato per i driver NDIS 5.1 (vedere NdisInitializeNPagedLookasideList (NDIS 5.1) in Windows XP.
Piattaforma di destinazione Desktop
Intestazione ndis.h (includere Ndis.h)
IRQL <= DISPATCH_LEVEL (vedere sezione Osservazioni)
Regole di conformità DDI Irql_Miscellaneous_Function(ndis)

Vedi anche

ExAllocatePoolWithTag

ExFreePool

NPAGED_LOOKASIDE_LIST

NdisAllocateFromNPagedLookasideList NdisDeleteNPagedLookasideList NdisFreeToNPagedLookasideList