Windows strutture opache del kernel

La tabella seguente contiene Windows opache del kernel:

Struttura opaca Descrizione
EPROCESS

La struttura EPROCESS è una struttura opaca che funge da oggetto processo per un processo.

Alcune routine, ad esempio PsGetProcessCreateTimeQuadPart, usano EPROCESS per identificare il processo su cui operare. I driver possono usare la routine PsGetCurrentProcess per ottenere un puntatore all'oggetto processo per il processo corrente e possono usare la routine ObReferenceObjectByHandle per ottenere un puntatore all'oggetto processo associato all'handle specificato. La variabile globale PsInitialSystemProcess punta all'oggetto processo per il processo di sistema.

Si noti che un oggetto processo è un oggetto di Gestione oggetti. I driver devono usare routine di Object Manager, ad esempio ObReferenceObject e ObDereferenceObject , per mantenere il conteggio dei riferimenti dell'oggetto.

Intestazione: Wdm.h. Include: Wdm.h, Ntddk.h, Ntifs.h.

ETHREAD

La struttura ETHREAD è una struttura opaca che funge da oggetto thread per un thread.

Alcune routine, ad esempio PsIsSystemThread, usano ETHREAD per identificare il thread su cui operare. I driver possono usare la routine PsGetCurrentThread per ottenere un puntatore all'oggetto thread per il thread corrente e possono usare la routine ObReferenceObjectByHandle per ottenere un puntatore all'oggetto thread associato all'handle specificato.

Si noti che un oggetto thread è un oggetto object manager. I driver devono usare routine di Object Manager, ad esempio ObReferenceObject e ObDereferenceObject , per mantenere il conteggio dei riferimenti dell'oggetto.

Intestazione: Wdm.h. Include: Wdm.h, Ntddk.h, Ntifs.h.

EX_RUNDOWN_REF

La EX_RUNDOWN_REF è una struttura di sistema opaca che contiene informazioni sullo stato della protezione da run-down per un oggetto condiviso associato.

typedef struct _EX_RUNDOWN_REF {
  
  ...  // opaque
  
} EX_RUNDOWN_REF, *PEX_RUNDOWN_REF;

Tutte le routine di protezione run-down accettano un puntatore a una EX_RUNDOWN_REF come primo parametro. Queste routine sono elencate nella parte inferiore di questa pagina.

Per altre informazioni, vedere Protezione da run-down.

Intestazione: Wdm.h. Includere Wdm.h.

EX_TIMER

La EX_TIMER è una struttura opaca usata dal sistema operativo per rappresentare un EX_TIMER timer.

typedef struct _EX_TIMER *PEX_TIMER;

Tutti i membri di questa struttura sono opachi per i driver.

Le routine ExXxxTimer seguenti richiedono un puntatore a una struttura EX_TIMER allocata dal sistema come parametro di input:

EX_TIMER oggetti timer basati su criteri vengono creati dal sistema operativo. Per ottenere tale oggetto timer, il driver chiama la routine ExAllocateTimer . Quando questo oggetto non è più necessario, il driver è responsabile dell'eliminazione dell'oggetto chiamando ExDeleteTimer.

Per altre informazioni, vedere Routine ExXxxTimer e EX_TIMER oggetti.

Intestazione: Wdm.h. Include: Wdm.h, Ntddk.h, Ntifs.h.

FAST_MUTEX

Una FAST_MUTEX è una struttura di dati opaca che rappresenta un mutex veloce.

Una FAST_MUTEX viene inizializzata dalla routine ExInitializeFastMutex .

Per altre informazioni sui mutex rapidi, vedere Mutex rapidi e mutex sorvegliati.

Intestazione: Wdm.h. Include: Wdm.h, Ntddk.h, Ntifs.h.

IO_CSQ

La IO_CSQ è una struttura opaca usata per specificare le routine della coda IRP cancel-safe del driver. Non impostare direttamente i membri di questa struttura. Usare IoCsqInitialize o IoCsqInitializeEx per inizializzare questa struttura.

Per una panoramica su come usare le code IRP sicure per l'annullamento, vedere Cancel-Cassaforte IRP Queues (Code IRP non sicure per l'annullamento).

Disponibile in Microsoft Windows XP e versioni successive del Windows operativo.

Intestazione: Wdm.h. Include: Wdm.h, Ntddk.h, Ntifs.h.

IO_CSQ_IRP_CONTEXT

La IO_CSQ_IRP_CONTEXT è una struttura di dati opaca usata per specificare il contesto IRP per un IRP nella coda IRP di annullamento sicura del driver. Viene usato come chiave dalle routine IoCsqInsertIrp, IoCsqInsertIrpEx e IoCsqRemoveIrp per identificare IRP specifici nella coda.

Per una panoramica su come usare le code IRP sicure per l'annullamento, vedere Cancel-Cassaforte IRP Queues (Code IRP non sicure per l'annullamento).

Disponibile in Microsoft Windows XP e versioni successive del Windows operativo.

Intestazione: Wdm.h. Include: Wdm.h, Ntddk.h, Ntifs.h.

IO_WORKITEM

La IO_WORKITEM è una struttura opaca che descrive un elemento di lavoro per un thread di lavoro di sistema.

Un driver può allocare un elemento di lavoro chiamando IoAllocateWorkItem. In alternativa, un driver può allocare il proprio buffer e quindi chiamare IoInitializeWorkItem per inizializzare il buffer come elemento di lavoro.

Qualsiasi elemento di lavoro allocato da IoAllocateWorkItem deve essere liberato da IoFreeWorkItem. Qualsiasi memoria inizializzata da IoInitializeWorkItem deve essere non inizializzata da IoUninitializeWorkItem prima di poter essere liberata.

Per altre informazioni sugli elementi di lavoro, vedere Thread di lavoro di sistema.

Intestazione: Wdm.h. Include: Wdm.h, Ntddk.h, Ntifs.h.

KBUGCHECK_CALLBACK_RECORD

La KBUGCHECK_CALLBACK_RECORD è una struttura opaca usata dalle routine KeRegisterBugCheckCallback e KeDeregisterBugCheckCallback .

La KBUGCHECK_CALLBACK_RECORD viene usata per la gestione delle routine KeRegisterBugCheckReasonCallback e KeDeregisterBugCheckReasonCallback .

La struttura deve essere allocata nella memoria residente, ad esempio un pool non di paging. Usare la routine KeInitializeCallbackRecord per inizializzare la struttura prima di usarla.

Intestazione: Ntddk.h. Includere: Ntddk.h.

KBUGCHECK_REASON_CALLBACK_RECORD

La KBUGCHECK_REASON_CALLBACK_RECORD è una struttura opaca usata dalle routine KeRegisterBugCheckReasonCallback e KeDeregisterBugCheckReasonCallback .

La KBUGCHECK_REASON_CALLBACK_RECORD viene usata per la gestione delle routine KeRegisterBugCheckReasonCallback e KeDeregisterBugCheckReasonCallback .

La struttura deve essere allocata nella memoria residente, ad esempio un pool non di paging. Usare la routine KeInitializeCallbackRecord per inizializzare la struttura prima di usarla.

Disponibile in Microsoft Windows XP con Service Pack 1 (SP1), Windows Server 2003 e versioni successive del Windows operativo.

Intestazione: Ntddk.h. Includere: Ntddk.h.

KDPC

La struttura KDPC è una struttura opaca che rappresenta un oggetto DPC. Non impostare direttamente i membri di questa struttura. Vedere Oggetti DPC e DPC.

Intestazione: Wdm.h. Include: Wdm.h, Ntddk.h, Ntifs.h.

KFLOATING_SAVE

La KFLOATING_SAVE è una struttura opaca che descrive lo stato a virgola mobile salvato dalla routine KeSaveFloatingPointState .

Usare KeRestoreFloatingPointState per ripristinare lo stato a virgola mobile.

Intestazione: Wdm.h. Include: Wdm.h, Ntddk.h, Ntifs.h.

KGUARDED_MUTEX

La KGUARDED_MUTEX struttura è una struttura opaca che rappresenta un mutex sorvegliato.

Usare KeInitializeGuardedMutex per inizializzare una KGUARDED_MUTEX come mutex sorvegliato.

I mutex sorvegliati devono essere allocati dal pool non di paging.

Per altre informazioni sui mutex sorvegliati, vedere Mutex veloci e mutex sorvegliati.

Intestazione: Wdm.h. Include: Wdm.h, Ntddk.h, Ntifs.h.

KINTERRUPT

Una struttura KINTERRUPT è una struttura opaca che rappresenta un interrupt per il sistema.

IoConnectInterruptEx fornisce un puntatore alla struttura KINTERRUPT per l'interrupt quando il driver registra una routine InterruptService o InterruptMessageService . Il driver usa questo puntatore durante l'acquisizione o il rilascio del blocco di rotazione dell'interrupt per l'interrupt. Il driver usa anche questo puntatore durante l'annullamento della registrazione di una routine InterruptService .

Intestazione: Wdm.h. Include: Wdm.h, Ntddk.h, Ntifs.h.

KLOCK_QUEUE_HANDLE

La KLOCK_QUEUE_HANDLE struttura è una struttura opaca che descrive un blocco di rotazione in coda. Il driver alloca la struttura KLOCK_QUEUE_HANDLE e la passa a KeAcquireInStackQueuedSpinLock e KeAcquireInStackQueuedSpinLockAtDpcLevel per acquisire il blocco di selezione in coda. Queste routine inizializzano la struttura per rappresentare il blocco di rotazione in coda. Il driver passa la struttura a KeReleaseInStackQueuedSpinLock e KeReleaseInStackQueuedSpinLockFromDpcLevel quando si rilascia il blocco di selezione.

Per altre informazioni, vedere Blocchi di spin in coda.

Intestazione: Wdm.h. Include: Wdm.h, Ntddk.h, Ntifs.h.

KTIMER

La struttura KTIMER è una struttura opaca che rappresenta un oggetto timer. Non impostare direttamente i membri di questa struttura. Per altre informazioni, vedere Oggetti Timer e DPC.

Intestazione: Wdm.h. Include: Wdm.h, Ntddk.h, Ntifs.h.

LOOKASIDE_LIST_EX

La LOOKASIDE_LIST_EX struttura descrive un elenco lookaside.

typedef struct _LOOKASIDE_LIST_EX {
  ...  // opaque
} LOOKASIDE_LIST_EX, *PLOOKASIDE_LIST_EX;

Un elenco lookaside è un pool di buffer di dimensioni fisse che il driver può gestire in locale per ridurre il numero di chiamate alle routine di allocazione del sistema e, di conseguenza, per migliorare le prestazioni. I buffer sono di dimensioni uniformi e vengono archiviati come voci nell'elenco lookaside.

I driver devono considerare LOOKASIDE_LIST_EX struttura come opaca. I driver che accedono ai membri della struttura o che hanno dipendenze dalle posizioni di questi membri potrebbero non rimanere portabili e interoperabili con altri driver.

La sezione Vedere anche seguente contiene un elenco delle routine che usano questa struttura.

Per altre informazioni sugli elenchi lookaside, vedere Uso degli elenchi Lookaside.

Nelle piattaforme a 64 bit questa struttura deve essere allineata a 16 byte.

Supportato a partire da Windows Vista.

Intestazione: Wdm.h. Include: Wdm.h, Ntddk.h, Ntifs.h.

NPAGED_LOOKASIDE_LIST

La NPAGED_LOOKASIDE_LIST struttura è una struttura opaca che descrive un elenco lookaside di buffer di dimensioni fisse allocati dal pool non di paging. Il sistema crea nuove voci ed elimina le voci inutilizzate nell'elenco in base alle esigenze. Per i buffer a dimensione fissa, l'uso di un elenco lookaside è più rapido rispetto all'allocazione diretta della memoria.

Usare ExInitializeNPagedLookasideList per inizializzare l'elenco lookaside. Usare ExAllocateFromNPagedLookasideList per allocare un buffer dall'elenco e ExFreeToNPagedLookasideList per restituire un buffer all'elenco.

I driver devono sempre liberare in modo esplicito tutti gli elenchi lookaside creati prima dello scaricamento. In caso contrario, è un grave errore di programmazione. Usare ExDeleteNPagedLookasideList per liberare l'elenco.

I driver possono anche usare elenchi lookaside per il pool di paging. A partire da Windows 2000, una struttura PAGED_LOOKASIDE_LIST descrive un elenco lookaside che contiene buffer di paginazione. A partire da Windows Vista, una struttura LOOKASIDE_LIST_EX può descrivere un elenco lookaside che contiene buffer di paginazione o non di pagina. Per altre informazioni, vedere Uso degli elenchi Lookaside.

Nelle piattaforme a 64 bit questa struttura deve essere allineata a 16 byte.

Supportato a partire da Windows 2000.

Intestazione: Wdm.h. Include: Wdm.h, Ntddk.h, Ntifs.h.

OBJECT_TYPE

OBJECT_TYPE è una struttura opaca che specifica il tipo di oggetto di un handle. Per altre informazioni, vedere ObReferenceObjectByHandle.

Intestazione: Wdm.h. Include: Wdm.h, Ntddk.h, Ntifs.h.

PAGED_LOOKASIDE_LIST

La PAGED_LOOKASIDE_LIST struttura è una struttura opaca che descrive un elenco lookaside di buffer di dimensioni fisse allocati dal pool di paging. Il sistema crea nuove voci ed elimina le voci inutilizzate nell'elenco in base alle esigenze. Per i buffer a dimensione fissa, l'uso di un elenco lookaside è più rapido rispetto all'allocazione diretta della memoria.

Usare ExInitializePagedLookasideList per inizializzare l'elenco lookaside. Usare ExAllocateFromPagedLookasideList per allocare un buffer dall'elenco e ExFreeToPagedLookasideList per restituire un buffer all'elenco.

I driver devono sempre liberare in modo esplicito tutti gli elenchi lookaside creati prima dello scaricamento. In caso contrario, è un grave errore di programmazione. Usare ExDeletePagedLookasideList per liberare l'elenco.

I driver possono anche usare elenchi lookaside per pool non di paging. A partire Windows 2000, una struttura NPAGED_LOOKASIDE_LIST descrive un elenco lookaside che contiene buffer non di pagina. A partire da Windows Vista, una struttura LOOKASIDE_LIST_EX può descrivere un elenco lookaside che contiene buffer di paginazione o non di pagina. Per altre informazioni, vedere Uso degli elenchi Lookaside.

Nelle piattaforme a 64 bit questa struttura deve essere allineata a 16 byte.

Supportato a partire da Windows 2000.

Intestazione: Wdm.h. Include: Wdm.h, Ntddk.h, Ntifs.h.

RTL_BITMAP

La RTL_BITMAP è una struttura opaca che descrive una bitmap.

typedef struct _RTL_BITMAP {
  // opaque
} RTL_BITMAP, *PRTL_BITMAP;

Non accedere direttamente ai membri di questa struttura. I driver che hanno dipendenze dalle posizioni dei membri o che accedono direttamente ai valori dei membri potrebbero non rimanere compatibili con le versioni future del Windows operativo.

La RTL_BITMAP struttura funge da intestazione per una bitmap unidimensionale per utilizzo generico di lunghezza arbitraria. Un driver può usare una bitmap di questo tipo come modo economico per tenere traccia di un set di elementi riutilizzabili. Ad esempio, un file system usare bitmap per tenere traccia dei cluster e dei settori su un disco rigido già allocati per contenere i dati dei file.

Per un elenco delle routine RtlXxx che usano RTL_BITMAP, vedere la sezione Vedere anche seguente. Il chiamante di queste routine RtlXxx è responsabile dell'allocazione dello spazio di archiviazione per la struttura RTL_BITMAP e per il buffer che contiene la bitmap. Questo buffer deve iniziare su un limite di quattro byte in memoria e deve avere una lunghezza multipla di quattro byte. La bitmap inizia all'inizio del buffer, ma può contenere un numero qualsiasi di bit che si adatteranno al buffer allocato.

Prima di fornire una RTL_BITMAP come parametro a una routine RtlXxx, chiamare la routine RtlInitializeBitMap per inizializzare la struttura. I parametri di input per questa routine sono un puntatore a un buffer che contiene la bitmap e le dimensioni, in bit, della bitmap. RtlInitializeBitMap non modifica il contenuto di questo buffer.

Se il chiamante alloca l'archiviazione per la struttura RTL_BITMAP e la bitmap nella memoria di paginazione, il chiamante deve essere in esecuzione in IRQL <= APC_LEVEL quando passa un puntatore a questa struttura come parametro a una delle routine RtlXxx elencate nella sezione Vedere anche. Se il chiamante alloca l'archiviazione dalla memoria non di pagina (o, in modo equivalente, dalla memoria di pagine bloccata), il chiamante può essere in esecuzione in qualsiasi IRQL quando chiama la routine RtlXxx.

Supportato in Windows 2000 e versioni successive di Windows.

Intestazione: Wdm.h. Include: Wdm.h, Ntddk.h, Ntifs.h.

RTL_RUN_ONCE

La RTL_RUN_ONCE struttura è una struttura opaca che archivia le informazioni per un'inizializzazione una sola volta.

I driver devono inizializzare questa struttura chiamando la routine RtlRunOnceInitialize prima di passarla a qualsiasi altra routine RtlRunOnceXxx.

Disponibile solo in Windows Vista e versioni successive del Windows operativo.

Intestazione: Ntddk.h. Include: Ntddk.h.

SECURITY_SUBJECT_CONTEXT

La SECURITY_SUBJECT_CONTEXT struttura è una struttura opaca che rappresenta il contesto di sicurezza all'interno del quale viene eseguita una determinata operazione.

Intestazione: Wdm.h. Include: Wdm.h, Ntddk.h, Ntifs.h.

SLIST_HEADER

Una SLIST_HEADER struttura è una struttura opaca che funge da intestazione per un elenco collegato in sequenza. Per altre informazioni, vedere Elenchi collegati in modo singly e doubly.

Nelle piattaforme a 64 bit le SLIST_HEADER devono essere allineate a 16 byte.

Intestazione: Wdm.h. Include: Wdm.h, Ntddk.h, Ntifs.h.

XSTATE_SAVE

La XSTATE_SAVE è una struttura opaca che descrive le informazioni sullo stato esteso del processore salvate e ripristinate da un driver in modalità kernel.

typedef struct _XSTATE_SAVE {
  ...  // opaque
} XSTATE_SAVE, *PXSTATE_SAVE;

Tutti i membri sono opachi.

Questa struttura viene usata dalle routine KeSaveExtendedProcessorStatee KeRestoreExtendedProcessorState .

Supportato in Windows 7 e versioni successive del Windows operativo.

Intestazione: Wdm.h. Include: Wdm.h, Ntddk.h, Ntifs.h.

ExAcquireFastMutex

ExAcquireFastMutexUnsafe

ExAllocateFromLookasideListEx

ExAllocateFromNPagedLookasideList

ExAllocateFromPagedLookasideList

ExAllocateTimer

ExDeletePagedLookasideList

ExFreeToPagedLookasideList

ExInitializePagedLookasideList

ExCancelTimer

ExDeleteLookasideListEx

ExDeleteNPagedLookasideList

ExDeleteTimer

ExFlushLookasideListEx

ExFreeToLookasideListEx

ExFreeToNPagedLookasideList

ExInitializeLookasideListEx

ExInitializeNPagedLookasideList

ExInitializeSListHead

ExInterlockedFlushSList

ExInterlockedPopEntrySList

ExInterlockedPushEntrySList

ExQueryDepthSList

ExReleaseFastMutex

ExReleaseFastMutexUnsafe

ExSetTimer

ExTryToAcquireFastMutex

ExTimerCallback

IoAllocateWorkItem

IoConnectInterruptEx

IoCsqInitialize

IoCsqInitializeEx

IoCsqInsertIrp

IoCsqInsertIrpEx

IoCsqRemoveIrp

IoDisconnectInterruptEx

IoFreeWorkItem

IoInitializeWorkItem

IoRequestDpc

IoUninitializeWorkItem

KeAcquireGuardedMutex

KeAcquireGuardedMutexUnsafe

KeAcquireInStackQueuedSpinLock

KeAcquireInStackQueuedSpinLockAtDpcLevel

KeAcquireInterruptSpinLock

KeCancelTimer

KeInitializeCallbackRecord

KeInitializeGuardedMutex

KeInitializeTimer

KeInitializeTimerEx

KeReadStateTimer

KeRestoreExtendedProcessorState

KeSaveExtendedProcessorState

KeSetTimer

KeSetTimerEx

KeDeregisterBugCheckCallback

KeDeregisterBugCheckReasonCallback

KeInsertQueueDpc

KeRegisterBugCheckCallback

KeRegisterBugCheckReasonCallback

KeReleaseGuardedMutexUnsafe

KeReleaseInStackQueuedSpinLock

KeReleaseInStackQueuedSpinLockFromDpcLevel

KeReleaseInterruptSpinLock

KeRestoreFloatingPointState

KeSaveFloatingPointState

KeSynchronizeExecution

LookasideListAllocateEx

LookasideListFreeEx

ObReferenceObjectByHandle

PsGetCurrentProcess

PsGetProcessCreateTimeQuadPart

PsInitialSystemProcess

PsIsSystemThread

Lettura dei dati di callback del controllo dei bug

RtlRunOnceBeginInitialize

RtlRunOnceComplete

RtlRunOnceExecuteOnce

RtlRunOnceInitialize

RunOnceInitialization

Protezione da run-down

SeAccessCheck

SeAssignSecurity

SeAssignSecurityEx