Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Este artigo lista e descreve estruturas opacas do kernel do Windows. Para muitas dessas estruturas, os drivers não devem acessar ou alterar nenhum membro, mas devem usar rotinas fornecidas pelo sistema para acessar as informações. Consulte cada estrutura para obter detalhes.
PROCESSO ELETRÓNICO
A estrutura EPROCESS é uma estrutura opaca que serve como objeto de processo para um processo.
Algumas rotinas, como PsGetProcessCreateTimeQuadPart, usam EPROCESS para identificar o processo a ser operado. Os drivers podem usar a rotina PsGetCurrentProcess para obter um ponteiro para o objeto de processo para o processo atual e podem usar a rotina ObReferenceObjectByHandle para obter um ponteiro para o objeto de processo associado ao identificador especificado. A variável global PsInitialSystemProcess aponta para o objeto de processo para o processo do sistema.
Um objeto de processo é um objeto do Gerenciador de Objetos. Os drivers devem usar rotinas do Gerenciador de Objetos, como ObReferenceObject e ObDereferenceObject , para manter a contagem de referência do objeto.
Cabeçalho: Wdm.h. Incluem: Wdm.h, Ntddk.h, Ntifs.h.
ETHREAD
A estrutura ETHREAD é uma estrutura opaca que serve como o objeto de thread para um thread.
Algumas rotinas, como PsIsSystemThread, usam ETHREAD para identificar o thread no qual operar. Os drivers podem usar a rotina PsGetCurrentThread para obter um ponteiro para o objeto de thread para o thread atual e podem usar a rotina ObReferenceObjectByHandle para obter um ponteiro para o objeto de thread associado ao identificador especificado.
Um objeto thread é um objeto Object Manager. Os drivers devem usar rotinas do Gerenciador de Objetos, como ObReferenceObject e ObDereferenceObject , para manter a contagem de referência do objeto.
Cabeçalho: Wdm.h. Incluem: Wdm.h, Ntddk.h, Ntifs.h.
EX_RUNDOWN_REF
A estrutura EX_RUNDOWN_REF é uma estrutura de sistema opaca que contém informações sobre o status da proteção contra rundown para um objeto compartilhado associado.
typedef struct _EX_RUNDOWN_REF {
... // opaque
} EX_RUNDOWN_REF, *PEX_RUNDOWN_REF;
As rotinas de proteção de rundown listadas no final deste artigo recebem um ponteiro para uma estrutura EX_RUNDOWN_REF como seu primeiro parâmetro.
Para obter mais informações, consulte Proteção contra Desgaste. Cabeçalho: Wdm.h. Inclua Wdm.h.
EX_TIMER
A estrutura EX_TIMER é uma estrutura opaca que o sistema operacional usa para representar um objeto de temporizador EX_TIMER.
typedef struct _EX_TIMER *PEX_TIMER;
Todos os membros desta estrutura são opacos para os condutores.
As seguintes rotinas de temporizador ExXxx requerem um ponteiro para uma estrutura de EX_TIMER alocada pelo sistema como parâmetro de entrada:
O sistema operacional cria objetos de temporizador baseados em EX_TIMER. Para obter esse objeto de temporizador, seu driver chama a rotina ExAllocateTimer . Quando esse objeto não é mais necessário, o driver é responsável por excluir o objeto chamando ExDeleteTimer.
Para obter mais informações, consulte Rotinas de temporizador ExXxxe objetos EX_TIMER.
Cabeçalho: Wdm.h. Incluem: Wdm.h, Ntddk.h, Ntifs.h.
FAST_MUTEX
Uma estrutura FAST_MUTEX é uma estrutura de dados opaca que representa um mutex rápido. A rotina ExInitializeFastMutex inicializa essa estrutura.
Para obter mais informações sobre mutexes rápidos, consulte "Fast Mutexes" e "Guarded Mutexes".
Cabeçalho: Wdm.h. Incluem: Wdm.h, Ntddk.h, Ntifs.h.
IO_CSQ
A estrutura IO_CSQ é uma estrutura opaca usada para especificar as rotinas de fila IRP seguras para cancelamento do driver. Não defina os membros desta estrutura diretamente. Use IoCsqInitialize ou IoCsqInitializeEx para inicializar essa estrutura.
Para obter uma visão geral de como usar filas de IRP seguras para cancelamento, consulte Filas de IRP Seguras para Cancelamento.
Disponível no Microsoft Windows XP e versões posteriores do sistema operacional Windows.
Cabeçalho: Wdm.h. Incluem: Wdm.h, Ntddk.h, Ntifs.h.
IO_CSQ_IRP_CONTEXT
A estrutura IO_CSQ_IRP_CONTEXT é uma estrutura de dados opaca usada para especificar o contexto de IRP para um IRP na fila de IRP segura para cancelamento do driver. As rotinas IoCsqInsertIrp, IoCsqInsertIrpEx e IoCsqRemoveIrp usam essa estrutura como uma chave para identificar IRPs específicos na fila.
Para obter uma visão geral de como usar Cancel-Safe IRP Queues, consulte Cancel-Safe IRP Queues.
Disponível no Microsoft Windows XP e versões posteriores do sistema operacional Windows.
Cabeçalho: Wdm.h. Incluem: Wdm.h, Ntddk.h, Ntifs.h.
Item_de_Trabalho_IO
A estrutura IO_WORKITEM é uma estrutura opaca que descreve um item de trabalho para um thread de trabalho do sistema.
Um driver pode alocar um item de trabalho chamando IoAllocateWorkItem. Como alternativa, um driver pode alocar seu próprio buffer e, em seguida, chamar IoInitializeWorkItem para inicializar esse buffer como um item de trabalho.
Qualquer item de trabalho que IoAllocateWorkItem aloca deve ser liberado por IoFreeWorkItem. Qualquer memória inicializada por IoInitializeWorkItem deve ser desinicializada por IoUninitializeWorkItem antes de poder ser liberada.
Para obter mais informações sobre itens de trabalho, consulte Threads de trabalho do sistema.
Cabeçalho: Wdm.h. Incluem: Wdm.h, Ntddk.h, Ntifs.h.
KBUGCHECK_CALLBACK_RECORD
A estrutura KBUGCHECK_CALLBACK_RECORD é uma estrutura opaca que as rotinas KeRegisterBugCheckCallback e KeDeregisterBugCheckCallback usam.
A estrutura KBUGCHECK_CALLBACK_RECORD é usada pelas rotinas KeRegisterBugCheckReasonCallback e KeDeregisterBugCheckReasonCallback para contabilidade.
A estrutura deve ser alocada na memória residente, como pool não paginado. Use a rotina KeInitializeCallbackRecord para inicializar a estrutura antes de usá-la.
Cabeçalho: Ntddk.h. Inclui: Ntddk.h.
KBUGCHECK_REASON_CALLBACK_RECORD
A estrutura KBUGCHECK_REASON_CALLBACK_RECORD é uma estrutura opaca que as rotinas KeRegisterBugCheckReasonCallback e KeDeregisterBugCheckReasonCallback usam.
A estrutura KBUGCHECK_REASON_CALLBACK_RECORD é usada pelas rotinas KeRegisterBugCheckReasonCallback e KeDeregisterBugCheckReasonCallback para contabilidade.
A estrutura deve ser alocada na memória residente, como pool não paginado. Use a rotina KeInitializeCallbackRecord para inicializar a estrutura antes de usá-la.
Disponível no Microsoft Windows XP com Service Pack 1 (SP1), Windows Server 2003 e versões posteriores do sistema operacional Windows.
Cabeçalho: Ntddk.h. Inclui: Ntddk.h.
KDPC
A estrutura KDPC é uma estrutura opaca que representa um objeto DPC. Não defina os membros desta estrutura diretamente. Consulte Objetos DPC e DPCs.
Cabeçalho: Wdm.h. Incluem: Wdm.h, Ntddk.h, Ntifs.h.
KFLOATING_SAVE
A estrutura KFLOATING_SAVE é uma estrutura opaca que descreve o estado de ponto flutuante que a rotina KeSaveFloatingPointState salvou.
Use KeRestoreFloatingPointState para restaurar o estado de ponto flutuante.
Cabeçalho: Wdm.h. Incluem: Wdm.h, Ntddk.h, Ntifs.h.
KGUARDED_MUTEX
A estrutura KGUARDED_MUTEX é uma estrutura opaca que representa um mutex protegido.
Use KeInitializeGuardedMutex para inicializar uma estrutura KGUARDED_MUTEX como um mutex protegido.
Os mutexes protegidos devem ser alocados a partir do pool não paginado.
Para obter mais informações sobre mutexes protegidos, consulte Fast Mutexes e Guarded Mutexes.
Cabeçalho: Wdm.h. Incluem: Wdm.h, Ntddk.h, Ntifs.h.
KINTERRUPT
Uma estrutura KINTERRUPT é uma estrutura opaca que representa uma interrupção para o sistema.
IoConnectInterruptEx fornece um ponteiro para a estrutura KINTERRUPT para a interrupção quando o driver registra uma rotina InterruptService ou InterruptMessageService . O driver usa este ponteiro ao adquirir ou libertar o spin lock de interrupção. O driver também usa esse ponteiro ao desregistrar uma rotina InterruptService.
Cabeçalho: Wdm.h. Incluem: Wdm.h, Ntddk.h, Ntifs.h.
KLOCK_QUEUE_HANDLE
A estrutura KLOCK_QUEUE_HANDLE é uma estrutura opaca que descreve um bloqueio de tipo spin em fila. O driver aloca a estrutura KLOCK_QUEUE_HANDLE e a passa para KeAcquireInStackQueuedSpinLock e KeAcquireInStackQueuedSpinLockAtDpcLevel para adquirir o bloqueio de rotação em fila. Essas rotinas inicializam a estrutura para representar o bloqueio de rotação em fila. O driver passa a estrutura para KeReleaseInStackQueuedSpinLock e KeReleaseInStackQueuedSpinLockFromDpcLevel ao liberar o spinlock.
Para obter mais informações, consulte Bloqueios de rotação em fila.
Cabeçalho: Wdm.h. Incluem: Wdm.h, Ntddk.h, Ntifs.h.
KTIMER
A estrutura KTIMER é uma estrutura opaca que representa um objeto temporizador. Não defina os membros desta estrutura diretamente. Para obter mais informações, consulte Objetos de temporizador e DPCs.
Cabeçalho: Wdm.h. Incluem: Wdm.h, Ntddk.h, Ntifs.h.
LOOKASIDE_LIST_EX
A estrutura LOOKASIDE_LIST_EX descreve uma lista lookaside.
typedef struct _LOOKASIDE_LIST_EX {
... // opaque
} LOOKASIDE_LIST_EX, *PLOOKASIDE_LIST_EX;
Uma lista lookaside é um pool de buffers de tamanho fixo que o driver pode gerenciar localmente para reduzir o número de chamadas para rotinas de alocação do sistema. A redução dessas chamadas melhora o desempenho. Os buffers são de tamanho uniforme e são armazenados como entradas na lista lookside.
Os condutores devem tratar a estrutura LOOKASIDE_LIST_EX como opaca. Os drivers que acedem membros da estrutura ou que têm dependências nas posições desses membros podem não permanecer portáteis e interoperáveis com outros drivers.
A seção Artigos relacionados contém uma lista das rotinas que usam essa estrutura.
Para obter mais informações sobre listas lookaside, consulte Using Lookaside Lists.
Em plataformas de 64 bits, essa estrutura deve estar alinhada a 16 bytes.
Cabeçalho: Wdm.h. Incluem: Wdm.h, Ntddk.h, Ntifs.h.
NPAGED_LOOKASIDE_LIST
A estrutura NPAGED_LOOKASIDE_LIST é uma estrutura opaca que descreve uma lista lookaside de buffers de tamanho fixo alocados a partir de pool não paginado. O sistema cria novas entradas e destrói entradas não utilizadas na lista, conforme necessário. Para buffers de tamanho fixo, usar uma lista lookaside é mais rápido do que alocar memória diretamente.
Utilize ExInitializeNPagedLookasideList para inicializar a lista lookaside. Use ExAllocateFromNPagedLookasideList para alocar um buffer da lista e ExFreeToNPagedLookasideList para devolver um buffer à lista.
Os condutores devem sempre libertar explicitamente quaisquer listas de lookaside que criem antes de descarregar. É um erro de programação grave fazer o contrário. Use ExDeleteNPagedLookasideList para liberar a lista.
Os drivers também podem utilizar listas lookaside para pool paginado. Uma estrutura PAGED_LOOKASIDE_LIST descreve uma lista lookaside que contém buffers paginados. Uma estrutura LOOKASIDE_LIST_EX pode descrever uma lista lookaside que contém buffers paginados ou não paginados. Para obter mais informações, consulte Usando Listas de Lookaside.
Em plataformas de 64 bits, essa estrutura deve estar alinhada a 16 bytes.
Cabeçalho: Wdm.h. Incluem: Wdm.h, Ntddk.h, Ntifs.h.
OBJECT_TYPE
OBJECT_TYPE é uma estrutura opaca que especifica o tipo de objeto de uma alça. Para obter mais informações, consulte ObReferenceObjectByHandle.
Cabeçalho: Wdm.h. Incluem: Wdm.h, Ntddk.h, Ntifs.h.
PAGED_LOOKASIDE_LIST
A estrutura PAGED_LOOKASIDE_LIST é uma estrutura opaca que descreve uma lista lookaside de buffers de tamanho fixo alocados do pool paginado. O sistema cria novas entradas e destrói entradas não utilizadas na lista, conforme necessário. Para buffers de tamanho fixo, usar uma lista lookaside é mais rápido do que alocar memória diretamente.
Use ExInitializePagedLookasideList para inicializar a lista lookside. Use ExAllocateFromPagedLookasideList para alocar um buffer da lista e ExFreeToPagedLookasideList para retornar um buffer para a lista.
Os condutores devem sempre libertar explicitamente quaisquer listas de lookaside que criem antes de descarregar. É um erro de programação grave fazer o contrário. Utilize ExDeletePagedLookasideList para libertar a lista.
Os drivers também podem usar listas lookaside para pool não paginado. Uma estrutura NPAGED_LOOKASIDE_LIST descreve uma lista lookaside que contém buffers não paginados. Uma estrutura LOOKASIDE_LIST_EX pode descrever uma lista lookaside que contém buffers paginados ou não paginados. Para obter mais informações, consulte Usando listas de Lookaside.
Em plataformas de 64 bits, essa estrutura deve estar alinhada a 16 bytes.
Cabeçalho: Wdm.h. Incluem: Wdm.h, Ntddk.h, Ntifs.h.
RTL_BITMAP
A estrutura RTL_BITMAP é uma estrutura opaca que descreve um bitmap.
typedef struct _RTL_BITMAP {
// opaque
} RTL_BITMAP, *PRTL_BITMAP;
Não aceda diretamente aos membros desta estrutura. Os drivers que têm dependências em locais de membros ou que acessam valores de membros diretamente podem não permanecer compatíveis com versões futuras do sistema operacional Windows.
A estrutura RTL_BITMAP serve como um cabeçalho para um bitmap unidimensional de uso geral de comprimento arbitrário. Um driver pode usar esse bitmap como uma maneira econômica de acompanhar um conjunto de itens reutilizáveis. Por exemplo, um sistema de arquivos pode usar bitmaps para controlar quais clusters e setores em um disco rígido já foram alocados para armazenar dados de arquivos.
Para obter uma lista das rotinas Rtl Xxx que usam estruturas RTL_BITMAP, consulte a seção Artigos relacionados. O chamador dessas rotinas RtlXxx é responsável por alocar o armazenamento para a estrutura RTL_BITMAP e para o buffer que contém o bitmap. Este buffer deve começar num limite de memória de 4 bytes e deve ter um comprimento múltiplo de 4 bytes. O bitmap começa no início do buffer, mas pode conter qualquer número de bits que cabem no buffer alocado.
Antes de fornecer uma estrutura RTL_BITMAP como parâmetro para uma rotina RtlXxx , chame a rotina RtlInitializeBitMap para inicializar a estrutura. Os parâmetros de entrada para essa rotina são um ponteiro para um buffer que contém o bitmap e o tamanho, em bits, do bitmap. RtlInitializeBitMap não altera o conteúdo desse buffer.
Caso o chamador aloque memória para a estrutura RTL_BITMAP e o bitmap na memória paginada, deverá estar a executar em IRQL <= APC_LEVEL ao passar um ponteiro para esta estrutura como parâmetro para qualquer uma das rotinas RtlXxx listadas na secção Artigos relacionados. Se o chamador aloca o armazenamento da memória não paginada (ou, equivalentemente, da memória paginada bloqueada), o chamador pode estar em execução em qualquer IRQL quando chama a rotina RtlXxx .
Cabeçalho: Wdm.h. Incluem: Wdm.h, Ntddk.h, Ntifs.h.
RTL_RUN_ONCE
A estrutura RTL_RUN_ONCE é uma estrutura opaca que armazena as informações para uma inicialização única.
Os drivers devem inicializar essa estrutura chamando a rotina RtlRunOnceInitialize antes de passá-la para qualquer outra rotina RtlRunOnceXxx .
Cabeçalho: Ntddk.h. Inclui: Ntddk.h.
CONTEXTO_DO_ASSUNTO_DE_SEGURANÇA
A estrutura SECURITY_SUBJECT_CONTEXT é uma estrutura opaca que representa o contexto de segurança no qual uma determinada operação está ocorrendo. Os condutores não devem modificar ou tentar aceder diretamente a quaisquer membros desta estrutura para tomar decisões de segurança. Em vez disso, para evitar problemas de segurança na autorização, passe essa estrutura opaca em chamadas para SeAccessCheck ou SePrivilegeCheck.
Cabeçalho: Wdm.h. Incluem: Wdm.h, Ntddk.h, Ntifs.h.
SLIST_HEADER
Uma estrutura SLIST_HEADER é uma estrutura opaca que serve como cabeçalho para uma lista sequenciada individualmente vinculada. Para obter mais informações, consulte Listas Ligadas Simples e Duplas.
Em plataformas de 64 bits, estruturas SLIST_HEADER devem estar alinhadas a 16 bytes.
Cabeçalho: Wdm.h. Incluem: Wdm.h, Ntddk.h, Ntifs.h.
XSTATE_SAVE
A estrutura XSTATE_SAVE é uma estrutura opaca que descreve as informações de estado estendido do processador que um driver de modo kernel salva e restaura.
typedef struct _XSTATE_SAVE {
... // opaque
} XSTATE_SAVE, *PXSTATE_SAVE;
Todos os membros são opacos.
As rotinas KeSaveExtendedProcessorState e KeRestoreExtendedProcessorState usam essa estrutura.
Cabeçalho: Wdm.h. Incluem: Wdm.h, Ntddk.h, Ntifs.h.
Artigos relacionados
ExAllocateFromNPagedLookasideList
ExAllocateFromPagedLookasideList
ExInitializePagedLookasideList
ExInitializeNPagedLookasideList
KeAcquireInStackQueuedSpinLock
KeAcquireInStackQueuedSpinLockAtDpcLevel
KeRestoreExtendedProcessorState
KeDeregisterBugCheckReasonCallback
KeRegisterBugCheckReasonCallback
KeReleaseInStackQueuedSpinLock
KeReleaseInStackQueuedSpinLockFromDpcLevel
PsGetProcessCreateTimeQuadPart
Lendo dados de retorno de chamada de verificação de bug