Funzione KeInsertQueue (ntifs.h)

La routine KeInsertQueue inserisce una voce alla coda della coda specificata se non può usare immediatamente la voce per soddisfare un'attesa di thread.

Sintassi

LONG KeInsertQueue(
  [in, out] PRKQUEUE    Queue,
  [in, out] PLIST_ENTRY Entry
);

Parametri

[in, out] Queue

Puntatore a un oggetto coda inizializzato per il quale il chiamante fornisce l'archiviazione residente nel pool non con pagine.

[in, out] Entry

Puntatore a una voce da accodare. Questo puntatore deve essere un indirizzo dello spazio del sistema residente.

Valore restituito

KeInsertQueue restituisce lo stato precedente del segnale della coda specificata. Se è stato impostato su zero (ovvero non segnalato) prima della chiamata di KeInsertQueue , KeInsertQueue restituisce zero, significa che non sono state accodate voci. Se era diverso da zero (segnalato), KeInsertQueue restituisce il numero di voci accodate prima della chiamata a KeInsertQueue .

Commenti

Le voci da accodare da KeInsertQueue devono essere allocate dal pool non con pagine. Ad esempio, la memoria per le voci definite dal chiamante può essere allocata con ExAllocatePoolWithTag. Se il chiamante alloca le voci di una dimensione fissa, la creazione di un elenco lookaside con ExInitializeNPagedLookasideList e l'allocazione da essa con ExAllocateFromNPagedLookasideList è più efficiente rispetto all'esecuzione di chiamate frequenti a ExAllocatePoolWithTag, in particolare per le voci le cui dimensioni non sono più PAGE_SIZE.

Se tutti i thread sono in attesa dell'oggetto coda quando viene chiamato KeInsertQueue , l'attesa di un singolo thread viene soddisfatta da questa chiamata. Il thread viene inviato per l'esecuzione con il puntatore di ingresso specificato.

Se non sono presenti thread in attesa dell'oggetto coda quando viene chiamato KeInsertQueue , la voce specificata viene inserita nella coda e lo stato del segnale dell'oggetto coda viene incrementato.

Per altre informazioni sull'uso delle code interne gestite dal driver, vedere Code gestite da driver.

Requisiti

Requisito Valore
Piattaforma di destinazione Universale
Intestazione ntifs.h (include Ntifs.h)
Libreria NtosKrnl.lib
DLL NtosKrnl.exe
IRQL <= DISPATCH_LEVEL
Regole di conformità DDI HwStorPortProhibitedDDDIs(storport)

Vedi anche

ExAllocateFromNPagedLookasideList

ExAllocatePoolWithTag

ExInitializeNPagedLookasideList

KeInitializeQueue

KeInsertHeadQueue

KeRemoveQueue