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) |