Windows de kernel opaco

La tabla siguiente contiene estructuras opacas Windows kernel:

Estructura opaca Descripción
EPROCESS

La estructura EPROCESS es una estructura opaca que actúa como objeto de proceso para un proceso.

Algunas rutinas, como PsGetProcessCreateTimeQuadPart, usan EPROCESS para identificar el proceso en el que operar. Los controladores pueden usar la rutina PsGetCurrentProcess para obtener un puntero al objeto de proceso para el proceso actual y pueden usar la rutina ObReferenceObjectByHandle para obtener un puntero al objeto de proceso asociado al identificador especificado. La variable global PsInitialSystemProcess apunta al objeto de proceso para el proceso del sistema.

Tenga en cuenta que un objeto de proceso es un objeto del Administrador de objetos. Los controladores deben usar rutinas del Administrador de objetos como ObReferenceObject y ObDereferenceObject para mantener el recuento de referencias del objeto.

Encabezado: Wdm.h. Incluir: Wdm.h, Ntddk.h, Ntifs.h.

ETHREAD

La estructura ETHREAD es una estructura opaca que actúa como objeto de subproceso para un subproceso.

Algunas rutinas, como PsIsSystemThread, usan ETHREAD para identificar el subproceso en el que se opera. Los controladores pueden usar la rutina PsGetCurrentThread para obtener un puntero al objeto de subproceso para el subproceso actual y pueden usar la rutina ObReferenceObjectByHandle para obtener un puntero al objeto de subproceso asociado al identificador especificado.

Tenga en cuenta que un objeto de subproceso es un objeto del Administrador de objetos. Los controladores deben usar rutinas del Administrador de objetos como ObReferenceObject y ObDereferenceObject para mantener el recuento de referencias del objeto.

Encabezado: Wdm.h. Incluir: Wdm.h, Ntddk.h, Ntifs.h.

EX_RUNDOWN_REF

La EX_RUNDOWN_REF estructura es una estructura opaca del sistema que contiene información sobre el estado de la protección de ejecución para un objeto compartido asociado.

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

Todas las rutinas de protección de ejecución toman un puntero a una EX_RUNDOWN_REF estructura como primer parámetro. Estas rutinas se muestran en la parte inferior de esta página.

Para obtener más información, vea Protección contra la ejecución.

Encabezado: Wdm.h. Incluya Wdm.h.

EX_TIMER

La EX_TIMER estructura es una estructura opaca que usa el sistema operativo para representar un EX_TIMER de temporizador.

typedef struct _EX_TIMER *PEX_TIMER;

Todos los miembros de esta estructura son opacos para los controladores.

Las siguientes rutinas ExXxxTimer requieren un puntero a una estructura de EX_TIMER asignada por el sistema como parámetro de entrada:

EX_TIMER los objetos de temporizador basados en el sistema operativo. Para obtener este tipo de objeto de temporizador, el controlador llama a la rutina ExAllocateTimer . Cuando este objeto ya no es necesario, el controlador es responsable de eliminar el objeto mediante una llamada a ExDeleteTimer.

Para obtener más información, vea ExXxxTimer Routines and EX_TIMER Objects.

Encabezado: Wdm.h. Incluir: Wdm.h, Ntddk.h, Ntifs.h.

FAST_MUTEX

Una FAST_MUTEX estructura es una estructura de datos opaca que representa una exclusión mutua rápida.

Una FAST_MUTEX estructura se inicializa mediante la rutina ExInitializeFastMutex .

Para más información sobre las exclusiones mutuas rápidas, consulte Exclusión mutua rápida y Exclusión mutua protección.

Encabezado: Wdm.h. Incluir: Wdm.h, Ntddk.h, Ntifs.h.

IO_CSQ

La IO_CSQ estructura es una estructura opaca que se usa para especificar las rutinas de cola IRP seguras para cancelación del controlador. No establezca directamente los miembros de esta estructura. Use IoCsqInitialize o IoCsqInitializeEx para inicializar esta estructura.

Para obtener información general sobre cómo usar colas IRP seguras para cancelación, consulte Cancel-Caja fuerte colas IRP.

Disponible en Microsoft Windows XP y versiones posteriores del Windows operativo.

Encabezado: Wdm.h. Incluir: Wdm.h, Ntddk.h, Ntifs.h.

IO_CSQ_IRP_CONTEXT

La IO_CSQ_IRP_CONTEXT es una estructura de datos opaca que se usa para especificar el contexto de IRP para un IRP en la cola IRP segura para cancelación del controlador. Las rutinas IoCsqInsertIrp, IoCsqInsertIrpEx e IoCsqRemoveIrp lo usan como clave para identificar IRP concretos en la cola.

Para obtener información general sobre cómo usar colas IRP seguras para cancelación, consulte Cancel-Caja fuerte colas IRP.

Disponible en Microsoft Windows XP y versiones posteriores del Windows operativo.

Encabezado: Wdm.h. Incluir: Wdm.h, Ntddk.h, Ntifs.h.

IO_WORKITEM

La IO_WORKITEM estructura es una estructura opaca que describe un elemento de trabajo para un subproceso de trabajo del sistema.

Un controlador puede asignar un elemento de trabajo llamando a IoAllocateWorkItem. Como alternativa, un controlador puede asignar su propio búfer y, a continuación, llamar a IoInitializeWorkItem para inicializar ese búfer como un elemento de trabajo.

IoFreeWorkItem debe liberar cualquier elemento de trabajo asignado por IoAllocateWorkItem. IoUninitializeWorkItem debe no inicializar cualquier memoria inicializada por IoInitializeWorkItem para poder liberarla.

Para obtener más información sobre los elementos de trabajo, vea Subprocesos de trabajo del sistema.

Encabezado: Wdm.h. Incluir: Wdm.h, Ntddk.h, Ntifs.h.

KBUGCHECK_CALLBACK_RECORD

La KBUGCHECK_CALLBACK_RECORD estructura es una estructura opaca que usan las rutinas KeRegisterCheckCheckCallback y KeDeregisterCheckCheckCallback .

La KBUGCHECK_CALLBACK_RECORD se usa para la contabilidad mediante las rutinas KeRegisterCheckCheckReasonCallback y KeDeregisterCheckReasonCallback .

La estructura debe asignarse en la memoria residentes, como el grupo sin página. Use la rutina KeInitializeCallbackRecord para inicializar la estructura antes de usarla.

Encabezado: Ntddk.h. Incluir: Ntddk.h.

KBUGCHECK_REASON_CALLBACK_RECORD

La KBUGCHECK_REASON_CALLBACK_RECORD estructura es una estructura opaca que usan las rutinas KeRegisterRegisterCheckReasonCallback y KeDeregisterCheckCheckReasonCallback .

Las rutinasKeRegisterCheckReasonCallback y KeDeregisterCheckReasonCallback usan la estructura KBUGCHECK_REASON_CALLBACK_RECORD para la contabilidad.

La estructura debe asignarse en la memoria residentes, como el grupo sin página. Use la rutina KeInitializeCallbackRecord para inicializar la estructura antes de usarla.

Disponible en Microsoft Windows XP con Service Pack 1 (SP1), Windows Server 2003 y versiones posteriores del Windows operativo.

Encabezado: Ntddk.h. Incluir: Ntddk.h.

KDPC

La estructura KDPC es una estructura opaca que representa un objeto DPC. No establezca directamente los miembros de esta estructura. Consulte Objetos DPC y DPC.

Encabezado: Wdm.h. Incluir: Wdm.h, Ntddk.h, Ntifs.h.

KFLOATING_SAVE

La KFLOATING_SAVE estructura es una estructura opaca que describe el estado de punto flotante que guardó la rutina KeSaveFloatingPointState .

Use KeRestoreFloatingPointState para restaurar el estado de punto flotante.

Encabezado: Wdm.h. Incluir: Wdm.h, Ntddk.h, Ntifs.h.

KGUARDED_MUTEX

La KGUARDED_MUTEX estructura es una estructura opaca que representa una exclusión mutua resguardada.

Use KeInitializeGuardedMutex para inicializar una estructura KGUARDED_MUTEX como exclusión mutua de protección.

Las exclusiones mutuas resguardadas deben asignarse desde un grupo no paginado.

Para obtener más información sobre las exclusiones mutuas con protección, consulte Exclusión mutua rápida y exclusión mutua protección.

Encabezado: Wdm.h. Incluir: Wdm.h, Ntddk.h, Ntifs.h.

KINTERRUPT

Una estructura KINTERRUPT es una estructura opaca que representa una interrupción en el sistema.

IoConnectInterruptEx proporciona un puntero a la estructura KINTERRUPT para la interrupción cuando el controlador registra una rutina InterruptService o InterruptMessageService . El controlador usa este puntero al adquirir o liberar el bloqueo de número de interrupción para la interrupción. El controlador también usa este puntero al anular el registro de una rutina InterruptService .

Encabezado: Wdm.h. Incluir: Wdm.h, Ntddk.h, Ntifs.h.

KLOCK_QUEUE_HANDLE

La KLOCK_QUEUE_HANDLE estructura es una estructura opaca que describe un bloqueo de número en cola. El controlador asigna la estructura KLOCK_QUEUE_HANDLE y la pasa a KeAcquireInStackQueuedSpinLock y KeAcquireInStackQueuedSpinLockAtDpcLevel para adquirir el bloqueo de número en cola. Esas rutinas inicializan la estructura para representar el bloqueo de número en cola. El controlador pasa la estructura a KeReleaseInStackQueuedSpinLock y KeReleaseInStackQueuedSpinLockFromDpcLevel al liberar el bloqueo de número.

Para obtener más información, vea Bloqueos de giro en cola.

Encabezado: Wdm.h. Incluir: Wdm.h, Ntddk.h, Ntifs.h.

KTIMER

La estructura KTIMER es una estructura opaca que representa un objeto de temporizador. No establezca directamente los miembros de esta estructura. Para más información, consulte Objetos de temporizador y DPC.

Encabezado: Wdm.h. Incluir: Wdm.h, Ntddk.h, Ntifs.h.

LOOKASIDE_LIST_EX

La LOOKASIDE_LIST_EX estructura describe una lista de aspecto.

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

Una lista de aspecto es un grupo de búferes de tamaño fijo que el controlador puede administrar localmente para reducir el número de llamadas a rutinas de asignación del sistema y, por tanto, para mejorar el rendimiento. Los búferes tienen un tamaño uniforme y se almacenan como entradas en la lista de vistas.

Los controladores deben tratar la estructura LOOKASIDE_LIST_EX como opaca. Es posible que los controladores que acceden a miembros de la estructura o que tienen dependencias en las ubicaciones de estos miembros no sigan siendo portátiles e interoperables con otros controladores.

La siguiente sección Vea también contiene una lista de las rutinas que usan esta estructura.

Para obtener más información sobre las listas de lookaside, vea Using Lookaside Lists.

En las plataformas de 64 bits, esta estructura debe estar alineada en 16 bytes.

Se admite a partir de Windows Vista.

Encabezado: Wdm.h. Incluir: Wdm.h, Ntddk.h, Ntifs.h.

NPAGED_LOOKASIDE_LIST

La NPAGED_LOOKASIDE_LIST estructura es una estructura opaca que describe una lista de búferes de tamaño fijo asignados desde un grupo sin página. El sistema crea nuevas entradas y destruye las entradas no utilizadas en la lista según sea necesario. En el caso de los búferes de tamaño fijo, el uso de una lista de búsqueda es más rápido que asignar memoria directamente.

Use ExInitializeNPagedLookasideList para inicializar la lista de búsqueda. Use ExAllocateFromNPagedLookasideList para asignar un búfer de la lista y ExFreeToNPagedLookasideList para devolver un búfer a la lista.

Los controladores siempre deben liberar explícitamente las listas de aspecto que creen antes de la descarga. De lo contrario, es un error de programación grave. Use ExDeleteNPagedLookasideList para liberar la lista.

Los controladores también pueden usar listas de búsqueda para el grupo paginado. A partir Windows 2000, una estructura PAGED_LOOKASIDE_LIST describe una lista de búsqueda que contiene búferes paginados. A partir Windows Vista, una estructura LOOKASIDE_LIST_EX puede describir una lista de búsqueda que contiene búferes paginados o no paginados. Para obtener más información, vea Usar listas de lookaside.

En las plataformas de 64 bits, esta estructura debe estar alineada en 16 bytes.

Se admite a partir Windows 2000.

Encabezado: Wdm.h. Incluir: Wdm.h, Ntddk.h, Ntifs.h.

OBJECT_TYPE

OBJECT_TYPE estructura opaca que especifica el tipo de objeto de un identificador. Para obtener más información, vea ObReferenceObjectByHandle.

Encabezado: Wdm.h. Incluir: Wdm.h, Ntddk.h, Ntifs.h.

PAGED_LOOKASIDE_LIST

La PAGED_LOOKASIDE_LIST estructura es una estructura opaca que describe una lista similar de búferes de tamaño fijo asignados desde el grupo paginado. El sistema crea nuevas entradas y destruye las entradas no utilizadas en la lista según sea necesario. En el caso de los búferes de tamaño fijo, el uso de una lista de búsqueda es más rápido que asignar memoria directamente.

Use ExInitializePagedLookasideList para inicializar la lista de lookaside. Use ExAllocateFromPagedLookasideList para asignar un búfer de la lista y ExFreeToPagedLookasideList para devolver un búfer a la lista.

Los controladores siempre deben liberar explícitamente las listas de aspecto que creen antes de la descarga. De lo contrario, es un error de programación grave. Use ExDeletePagedLookasideList para liberar la lista.

Los controladores también pueden usar listas de aspecto para el grupo sin página. A partir Windows 2000, una estructura NPAGED_LOOKASIDE_LIST describe una lista de aspecto que contiene búferes sin página. A partir Windows Vista, una estructura LOOKASIDE_LIST_EX puede describir una lista de búsqueda que contiene búferes paginados o no paginados. Para obtener más información, vea Usar listas de lookaside.

En las plataformas de 64 bits, esta estructura debe estar alineada en 16 bytes.

Se admite a partir Windows 2000.

Encabezado: Wdm.h. Incluir: Wdm.h, Ntddk.h, Ntifs.h.

RTL_BITMAP

La RTL_BITMAP estructura es una estructura opaca que describe un mapa de bits.

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

No acceda directamente a los miembros de esta estructura. Es posible que los controladores que tienen dependencias en ubicaciones de miembros o que acceden directamente a valores de miembro no sean compatibles con versiones futuras del Windows operativo.

La RTL_BITMAP estructura actúa como encabezado para un mapa de bits unidimensional de uso general de longitud arbitraria. Un controlador puede usar este tipo de mapa de bits como una manera económica de realizar un seguimiento de un conjunto de elementos reutilizables. Por ejemplo, un sistema de archivos puede usar mapas de bits para realizar un seguimiento de los clústeres y sectores de un disco duro que ya se han asignado para contener datos de archivo.

Para obtener una lista de las rutinas RtlXxx que usan RTL_BITMAP estructuras, consulte la siguiente sección Vea también. El llamador de estas rutinas RtlXxx es responsable de asignar el almacenamiento para la estructura RTL_BITMAP y para el búfer que contiene el mapa de bits. Este búfer debe comenzar en un límite de cuatro bytes en memoria y debe tener un múltiplo de cuatro bytes de longitud. El mapa de bits comienza al principio del búfer, pero puede contener cualquier número de bits que caben en el búfer asignado.

Antes de proporcionar una estructura RTL_BITMAP como parámetro a una rutina RtlXxx, llame a la rutina RtlInitializeBitMap para inicializar la estructura. Los parámetros de entrada de esta rutina son un puntero a un búfer que contiene el mapa de bits y el tamaño, en bits, del mapa de bits. RtlInitializeBitMap no cambia el contenido de este búfer.

Si el autor de la llamada asigna el almacenamiento para la estructura RTL_BITMAP y el mapa de bits en la memoria paginada, el autor de la llamada debe ejecutarse en IRQL <= APC_LEVEL cuando pasa un puntero a esta estructura como parámetro a cualquiera de las rutinas RtlXxx que se enumeran en la sección Ver también. Si el autor de la llamada asigna el almacenamiento de la memoria no paginada (o, equivalentemente, de la memoria paginada que está bloqueada), el autor de la llamada puede ejecutarse en cualquier IRQL cuando llama a la rutina RtlXxx .

Compatible con Windows 2000 y versiones posteriores de Windows.

Encabezado: Wdm.h. Incluir: Wdm.h, Ntddk.h, Ntifs.h.

RTL_RUN_ONCE

La RTL_RUN_ONCE estructura es una estructura opaca que almacena la información de una inicialización única.

Los controladores deben inicializar esta estructura llamando a la rutina RtlRunOnceInitialize antes de pasarla a cualquier otra rutina RtlRunOnceXxx.

Disponible solo en Windows Vista y versiones posteriores del Windows operativo.

Encabezado: Ntddk.h. Incluir: Ntddk.h.

SECURITY_SUBJECT_CONTEXT

La SECURITY_SUBJECT_CONTEXT estructura es una estructura opaca que representa el contexto de seguridad en el que se está llevando a cabo una operación determinada.

Encabezado: Wdm.h. Incluir: Wdm.h, Ntddk.h, Ntifs.h.

SLIST_HEADER

Una SLIST_HEADER estructura es una estructura opaca que actúa como encabezado para una lista vinculada por secuencias. Para obtener más información, vea Listas vinculadas de Singly y Doubly.

En las plataformas de 64 bits, SLIST_HEADER estructuras deben estar alineadas de 16 bytes.

Encabezado: Wdm.h. Incluir: Wdm.h, Ntddk.h, Ntifs.h.

XSTATE_SAVE

La XSTATE_SAVE estructura es una estructura opaca que describe la información de estado extendido del procesador que un controlador en modo kernel guarda y restaura.

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

Todos los miembros son opacos.

Las rutinas KeSaveExtendedProcessorState y KeRestoreExtendedProcessorState usan esta estructura.

Compatible con Windows 7 y versiones posteriores del Windows operativo.

Encabezado: Wdm.h. Incluir: 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

KeDeregisterCallbackCheckCallback

KeDeregisterCheckReasonCallback

KeInsertQueueDpc

KeRegisterRegisterCheckCallback

KeRegisterRegisterCheckReasonCallback

KeReleaseGuardedMutexUnsafe

KeReleaseInStackQueuedSpinLock

KeReleaseInStackQueuedSpinLockFromDpcLevel

KeReleaseInterruptSpinLock

KeRestoreFloatingPointState

KeSaveFloatingPointState

KeSynchronizeExecution

LookasideListAllocateEx

LookasideListFreeEx

ObReferenceObjectByHandle

PsGetCurrentProcess

PsGetProcessCreateTimeQuadPart

PsInitialSystemProcess

PsIsSystemThread

Lectura de datos de devolución de llamada de comprobación de errores

RtlRunOnceBeginInitialize

RtlRunOnceComplete

RtlRunOnceExecuteOnce

RtlRunOnceInitialize

RunOnceInitialization

Protección contra la ejecución

SeAccessCheck

SeAssignSecurity

SeAssignSecurityEx