Windows непрозрачные структуры ядра

в следующей таблице содержатся Windows непрозрачные структуры ядра:

Непрозрачная структура Описание
епроцесс

Структура епроцесс — это непрозрачная структура, которая служит объектом процесса для процесса.

Некоторые подпрограммы, такие как псжетпроцесскреатетимекуадпарт, используют епроцесс для задания процесса, с которым будет работать. Драйверы могут использовать подпрограммы псжеткуррентпроцесс для получения указателя на объект процесса для текущего процесса и может использовать подпрограммы обреференцеобжектбихандле для получения указателя на объект процесса, связанный с указанным маркером. Глобальная переменная псинитиалсистемпроцесс указывает на объект Process для системного процесса.

Обратите внимание, что объект процесса является объектом диспетчера объектов. Для поддержания счетчика ссылок объекта драйверы должны использовать подпрограммы диспетчера объектов, такие как подпрограммы obreferenceobject и обдереференцеобжект .

Заголовок: WDM. h. Включить: WDM. h, Нтддк. h, Нтифс. h.

есреад

Структура есреад — это непрозрачная структура, которая выступает в качестве объекта потока для потока.

Некоторые подпрограммы, такие как псиссистемсреад, используют есреад для задания потока, с которым будет работать. Драйверы могут использовать подпрограммы псжеткуррентсреад для получения указателя на объект потока для текущего потока и может использовать подпрограммы обреференцеобжектбихандле для получения указателя на объект потока, связанный с указанным маркером.

Обратите внимание, что объект потока — это объект диспетчера объектов. Для поддержания счетчика ссылок объекта драйверы должны использовать подпрограммы диспетчера объектов, такие как подпрограммы obreferenceobject и обдереференцеобжект .

Заголовок: WDM. h. Включить: WDM. h, Нтддк. h, Нтифс. h.

EX_RUNDOWN_REF

Структура EX_RUNDOWN_REF представляет собой непрозрачную системную структуру, которая содержит сведения о состоянии отключения защиты для связанного общего объекта.

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

Подпрограммы защиты запуска от имени принимают указатель на структуру EX_RUNDOWN_REF в качестве первого параметра. Эти подпрограммы перечислены в нижней части этой страницы.

Дополнительные сведения см. в разделе о защите при запуске.

Заголовок: WDM. h. Включить WDM. h.

EX_TIMER

Структура EX_TIMER является непрозрачной структурой, используемой операционной системой для представления объекта таймера EX_TIMER .

typedef struct _EX_TIMER *PEX_TIMER;

Все члены этой структуры являются непрозрачными для драйверов.

Для следующих подпрограмм таймера exxxx требуется указатель на структуру EX_TIMER , выделенную системой, в качестве входного параметра:

Объекты таймера на основе EX_TIMERсоздаются операционной системой. Чтобы получить такой объект таймера, драйвер вызывает подпрограмму ексаллокатетимер . Если этот объект больше не нужен, драйвер отвечает за удаление объекта путем вызова ексделететимер.

Дополнительные сведения см. в разделе подпрограммы таймера exXxxи EX_TIMER объекты.

Заголовок: WDM. h. Включить: WDM. h, Нтддк. h, Нтифс. h.

FAST_MUTEX

Структура FAST_MUTEX — это непрозрачная структура данных, представляющая быстрый мьютекс.

Структура FAST_MUTEX инициализируется подпрограммы ексинитиализефастмутекс .

Дополнительные сведения о быстрых мьютексах см. в разделе быстрые мьютексы и защищенные мьютексы.

Заголовок: WDM. h. Включить: WDM. h, Нтддк. h, Нтифс. h.

IO_CSQ

Структура IO_CSQ является непрозрачной структурой, используемой для указания подподпрограммы очереди с отменой защиты IRP. Не задавайте члены этой структуры напрямую. Чтобы инициализировать эту структуру, используйте иокскинитиализе или иокскинитиализикс .

общие сведения об использовании очередей irp-безопасности см. в разделе cancel-Сейф очереди irp.

доступно в Microsoft Windows XP и более поздних версиях операционной системы Windows.

Заголовок: WDM. h. Включить: WDM. h, Нтддк. h, Нтифс. h.

IO_CSQ_IRP_CONTEXT

Структура IO_CSQ_IRP_CONTEXT является непрозрачной структурой данных, используемой для указания контекста IRP для IRP в очереди отмены безопасного IRP для драйвера. Он используется в качестве ключа для подпрограмм иокскинсертирп, иокскинсертирпекси Иокскремовеирп для обнаружения определенных запросов IRP в очереди.

общие сведения об использовании очередей irp-безопасности см. в разделе cancel-Сейф очереди irp.

доступно в Microsoft Windows XP и более поздних версиях операционной системы Windows.

Заголовок: WDM. h. Включить: WDM. h, Нтддк. h, Нтифс. h.

IO_WORKITEM

Структура IO_WORKITEM является непрозрачной структурой, описывающей рабочий элемент для системного рабочего потока.

Драйвер может выделить рабочий элемент, вызвав иоаллокатеворкитем. Кроме того, драйвер может выделить собственный буфер, а затем вызвать иоинитиализеворкитем , чтобы инициализировать этот буфер как рабочий элемент.

Любой рабочий элемент, выделенный иоаллокатеворкитем , должен быть освобожден иофриворкитем. Память, инициализированная иоинитиализеворкитем , должна быть инициализирована иаунинитиализеворкитем , прежде чем ее можно будет освободить.

Дополнительные сведения о рабочих элементах см. в разделе Системные рабочие потоки.

Заголовок: WDM. h. Включить: WDM. h, Нтддк. h, Нтифс. h.

KBUGCHECK_CALLBACK_RECORD

Структура KBUGCHECK_CALLBACK_RECORD является непрозрачной структурой, используемой подпрограммыми керегистербугчекккаллбакк и кедерегистербугчекккаллбакк .

Структура KBUGCHECK_CALLBACK_RECORD используется для регистрации подпрограммыми керегистербугчеккреасонкаллбакк и кедерегистербугчеккреасонкаллбакк .

Структура должна выделяться в резидентной памяти, например в невыгружаемом страничном пуле. Используйте подпрограммы кеинитиализекаллбаккрекорд для инициализации структуры перед ее использованием.

Заголовок: Нтддк. h. Включить: Нтддк. h.

KBUGCHECK_REASON_CALLBACK_RECORD

Структура KBUGCHECK_REASON_CALLBACK_RECORD является непрозрачной структурой, используемой подпрограммыми керегистербугчеккреасонкаллбакк и кедерегистербугчеккреасонкаллбакк .

Структура KBUGCHECK_REASON_CALLBACK_RECORD используется для регистрации подпрограммыми керегистербугчеккреасонкаллбакк и кедерегистербугчеккреасонкаллбакк .

Структура должна выделяться в резидентной памяти, например в невыгружаемом страничном пуле. Используйте подпрограммы кеинитиализекаллбаккрекорд для инициализации структуры перед ее использованием.

доступно в Microsoft Windows XP с пакетом обновления 1 (SP1), Windows Server 2003 и более поздних версиях Windows операционной системы.

Заголовок: Нтддк. h. Включить: Нтддк. h.

кдпк

Структура кдпк — это непрозрачная структура, представляющая объект DPC. Не задавайте члены этой структуры напрямую. См. объекты DPC и DPC.

Заголовок: WDM. h. Включить: WDM. h, Нтддк. h, Нтифс. h.

KFLOATING_SAVE

Структура KFLOATING_SAVE является непрозрачной структурой, описывающей состояние с плавающей запятой, сохраненное в подпрограммы кесавефлоатингпоинтстате .

Используйте кересторефлоатингпоинтстате для восстановления состояния с плавающей запятой.

Заголовок: WDM. h. Включить: WDM. h, Нтддк. h, Нтифс. h.

KGUARDED_MUTEX

Структура KGUARDED_MUTEX — это непрозрачная структура, представляющая защищенный мьютекс.

Используйте кеинитиализегуардедмутекс для инициализации структуры KGUARDED_MUTEX как защищенного мьютекса.

Защищенные мьютексы должны выделяться из невыгружаемого пула.

Дополнительные сведения о защищенных мьютексах см. в разделе быстрые мьютексы и защищенные мьютексы.

Заголовок: WDM. h. Включить: WDM. h, Нтддк. h, Нтифс. h.

кинтеррупт

Структура кинтеррупт — это непрозрачная структура, представляющая прерывание системы.

Иоконнектинтерруптекс предоставляет указатель на структуру кинтеррупт для прерывания, когда драйвер регистрирует подпрограмму интерруптсервице или интерруптмессажесервице . Драйвер использует этот указатель при получении или освобождении спин блокировки прерываний для прерывания. Драйвер также использует этот указатель при отмене регистрации подпрограммы интерруптсервице .

Заголовок: WDM. h. Включить: WDM. h, Нтддк. h, Нтифс. h.

KLOCK_QUEUE_HANDLE

Структура KLOCK_QUEUE_HANDLE является непрозрачной структурой, описывающей спин-блокировку в очереди. Драйвер выделяет структуру KLOCK_QUEUE_HANDLE и передает ее в кеаккуиреинстакккуеуедспинлокк и кеаккуиреинстакккуеуедспинлоккатдпклевел для получения спин блокировки, помещенной в очередь. Эти подпрограммы инициализируют структуру для представления спин блокировки, помещенной в очередь. Драйвер передает структуру в керелеасеинстакккуеуедспинлокк и керелеасеинстакккуеуедспинлоккфромдпклевел при освобождении спин Lock.

Дополнительные сведения см. в разделе очереди с спинными блокировками.

Заголовок: WDM. h. Включить: WDM. h, Нтддк. h, Нтифс. h.

ктимер

Структура ктимер — это непрозрачная структура, представляющая объект Timer. Не задавайте члены этой структуры напрямую. Дополнительные сведения см. в разделе Timer Objects and DPC.

Заголовок: WDM. h. Включить: WDM. h, Нтддк. h, Нтифс. h.

LOOKASIDE_LIST_EX

Структура LOOKASIDE_LIST_EX описывает резервный список.

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

Резервный список — это пул буферов фиксированного размера, которыми драйвер может управлять локально, чтобы сократить количество вызовов к подсистемам выделения системы и, таким образом, повысить производительность. Буферы имеют единообразный размер и хранятся в виде записей в резервном списке.

Драйверы должны рассматривать структуру LOOKASIDE_LIST_EX как непрозрачную. Драйверы, обращающиеся к членам структуры или имеющие зависимости от расположений этих членов, могут не сохранять перенос и взаимодействовать с другими драйверами.

В следующем разделе см. также список подпрограмм, использующих эту структуру.

Дополнительные сведения о списках резервных данных см. в разделе Использование резервных списков.

На 64-разрядных платформах эта структура должна быть согласована с 16 байтами.

поддерживается начиная с Windows Vista.

Заголовок: WDM. h. Включить: WDM. h, Нтддк. h, Нтифс. h.

NPAGED_LOOKASIDE_LIST

Структура NPAGED_LOOKASIDE_LIST является непрозрачной структурой, описывающей резервный список буферов фиксированного размера, выделенных из невыгружаемого пула. Система создает новые записи и уничтожает неиспользуемые элементы в списке при необходимости. Для буферов фиксированного размера использование резервного списка осуществляется быстрее, чем выделение памяти напрямую.

Используйте ексинитиализенпажедлукасиделист для инициализации списка резервов. Используйте ексаллокатефромнпажедлукасиделист , чтобы выделить буфер из списка, и ексфритонпажедлукасиделист , чтобы вернуть буфер в список.

Драйверы должны всегда явно освобождать все создаваемые им резервные списки перед выгрузкой. В противном случае это серьезная ошибка программирования. Чтобы освободить список, используйте ексделетенпажедлукасиделист .

Драйверы также могут использовать списки резервного страничного пула. начиная с Windows 2000, структура PAGED_LOOKASIDE_LIST описывает резервный список, содержащий постраничные буферы. начиная с Windows Vista, структура LOOKASIDE_LIST_EX может описывать резервный список, содержащий либо страничные, либо нестраничные буферы. Дополнительные сведения см. в разделе Использование резервных списков.

На 64-разрядных платформах эта структура должна быть согласована с 16 байтами.

поддерживается начиная с Windows 2000.

Заголовок: WDM. h. Включить: WDM. h, Нтддк. h, Нтифс. h.

OBJECT_TYPE

OBJECT_TYPE — это непрозрачная структура, указывающая тип объекта для маркера. Дополнительные сведения см. в разделе обреференцеобжектбихандле.

Заголовок: WDM. h. Включить: WDM. h, Нтддк. h, Нтифс. h.

PAGED_LOOKASIDE_LIST

Структура PAGED_LOOKASIDE_LIST является непрозрачной структурой, описывающей резервный список буферов фиксированного размера, выделенных из выгружаемого пула. Система создает новые записи и уничтожает неиспользуемые элементы в списке при необходимости. Для буферов фиксированного размера использование резервного списка осуществляется быстрее, чем выделение памяти напрямую.

Используйте ексинитиализепажедлукасиделист для инициализации списка резервов. Используйте ексаллокатефромпажедлукасиделист , чтобы выделить буфер из списка, и ексфритопажедлукасиделист , чтобы вернуть буфер в список.

Драйверы должны всегда явно освобождать все создаваемые им резервные списки перед выгрузкой. В противном случае это серьезная ошибка программирования. Чтобы освободить список, используйте ексделетепажедлукасиделист .

Драйверы также могут использовать резервные списки для невыгружаемого пула. начиная с Windows 2000, структура NPAGED_LOOKASIDE_LIST описывает резервный список, содержащий нестраничные буферы. начиная с Windows Vista, структура LOOKASIDE_LIST_EX может описывать резервный список, содержащий либо страничные, либо нестраничные буферы. Дополнительные сведения см. в разделе Использование резервных списков.

На 64-разрядных платформах эта структура должна быть согласована с 16 байтами.

поддерживается начиная с Windows 2000.

Заголовок: WDM. h. Включить: WDM. h, Нтддк. h, Нтифс. h.

RTL_BITMAP

Структура RTL_BITMAP является непрозрачной структурой, описывающей точечный рисунок.

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

Не следует напрямую обращаться к членам этой структуры. драйверы, которые имеют зависимости от расположений участников или обращаются к значениям членов напрямую, могут не оставаться совместимыми с будущими версиями операционной системы Windows.

Структура RTL_BITMAP выступает в качестве заголовка для одномерного точечного рисунка произвольной длины. Драйвер может использовать такой точечный рисунок как экономичный способ наблюдения за набором многократно используемых элементов. Например, файловая система может использовать точечные рисунки для мониторинга того, какие кластеры и секторы на жестком диске уже были выделены для хранения данных файлов.

Список подпрограмм с налевоxxx , в которых используются RTL_BITMAP структуры, см. в следующем разделе. также см. раздел. Объект, вызывающий эти подпрограммы от RTLxxx , отвечает за выделение хранилища для структуры RTL_BITMAP и для буфера, содержащего точечный рисунок. Этот буфер должен начинаться с 4-байтной границы в памяти и должен быть кратен четырем байтам. Точечный рисунок начинается с начала буфера, но может содержать любое количество битов, которое помещается в выделенный буфер.

Перед предоставлением структуры RTL_BITMAP в качестве параметра для подпрограммы RTLxxx вызовите подпрограммы ртлинитиализебитмап для инициализации структуры. Входными параметрами этой подпрограммы являются указатели на буфер, содержащий точечный рисунок, и размер битовой карты в битах. Ртлинитиализебитмап не изменяет содержимое этого буфера.

Если вызывающий объект выделяет хранилище для структуры RTL_BITMAP и точечного рисунка в памяти в выгружаемом страничном процессе, вызывающий объект должен работать на уровне IRQL < = APC_LEVEL при передаче указателя на эту структуру в качестве параметра в любую из подпрограмм RTLxxx , перечисленных в разделе "см. также". Если вызывающий объект выделяет хранилище из нестраничной памяти (или аналогично, от заблокированной памяти), вызывающий объект может работать на любом уровне IRQL при вызове подпрограммы RTLxxx .

поддерживается в Windows 2000 и более поздних версиях Windows.

Заголовок: WDM. h. Включить: WDM. h, Нтддк. h, Нтифс. h.

RTL_RUN_ONCE

Структура RTL_RUN_ONCE представляет собой непрозрачную структуру, в которой хранятся данные для однократной инициализации.

Драйверы должны инициализировать эту структуру, вызвав подпрограммы ртлрунонцеинитиализе перед передачей ее другим подпрограммым ртлрунонцеxxx .

доступно только в Windows Vista и более поздних версиях операционной системы Windows.

Заголовок: Нтддк. h. Включить: Нтддк. h.

SECURITY_SUBJECT_CONTEXT

Структура SECURITY_SUBJECT_CONTEXT — это непрозрачная структура, представляющая контекст безопасности, в котором выполняется определенная операция.

Заголовок: WDM. h. Включить: WDM. h, Нтддк. h, Нтифс. h.

SLIST_HEADER

Структура SLIST_HEADER — это непрозрачная структура, служащая в качестве заголовка для упорядоченного однонаправленного списка. Дополнительные сведения см. в разделе однонаправленные и двунаправленные списки.

На 64-разрядных платформах SLIST_HEADER структуры должны быть сопоставлены 16 байт.

Заголовок: WDM. h. Включить: WDM. h, Нтддк. h, Нтифс. h.

XSTATE_SAVE

Структура XSTATE_SAVE — это непрозрачная структура, описывающая сведения о расширенном процессоре, которые сохраняются и восстанавливаются драйвером режима ядра.

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

Все элементы являются непрозрачными.

Эта структура используется подпрограммыми кесавикстендедпроцессорстате и кересторикстендедпроцессорстате .

поддерживается в Windows 7 и более поздних версиях операционной системы Windows.

Заголовок: WDM. h. Включить: WDM. h, Нтддк. h, Нтифс. h.

ексаккуирефастмутекс

ексаккуирефастмутексунсафе

ексаллокатефромлукасиделистекс

ексаллокатефромнпажедлукасиделист

ексаллокатефромпажедлукасиделист

ексаллокатетимер

ексделетепажедлукасиделист

ексфритопажедлукасиделист

ексинитиализепажедлукасиделист

ексканцелтимер

ексделетелукасиделистекс

ексделетенпажедлукасиделист

ексделететимер

ексфлушлукасиделистекс

ексфритолукасиделистекс

ексфритонпажедлукасиделист

ексинитиализелукасиделистекс

ексинитиализенпажедлукасиделист

ексинитиализеслиссеад

ексинтерлоккедфлушслист

ексинтерлоккедпопентрислист

ексинтерлоккедпушентрислист

екскуеридепсслист

ексрелеасефастмутекс

ексрелеасефастмутексунсафе

екссеттимер

екстритоаккуирефастмутекс

екстимеркаллбакк

иоаллокатеворкитем

иоконнектинтерруптекс

иокскинитиализе

иокскинитиализикс

иокскинсертирп

иокскинсертирпекс

иокскремовеирп

иодисконнектинтерруптекс

иофриворкитем

иоинитиализеворкитем

иорекуестдпк

иаунинитиализеворкитем

кеаккуирегуардедмутекс

кеаккуирегуардедмутексунсафе

кеаккуиреинстакккуеуедспинлокк

кеаккуиреинстакккуеуедспинлоккатдпклевел

кеаккуиреинтерруптспинлокк

кеканцелтимер

кеинитиализекаллбаккрекорд

кеинитиализегуардедмутекс

кеинитиализетимер

кеинитиализетимерекс

кереадстатетимер

кересторикстендедпроцессорстате

кесавикстендедпроцессорстате

кесеттимер

кесеттимерекс

кедерегистербугчекккаллбакк

кедерегистербугчеккреасонкаллбакк

кеинсерткуеуедпк

керегистербугчекккаллбакк

керегистербугчеккреасонкаллбакк

керелеасегуардедмутексунсафе

керелеасеинстакккуеуедспинлокк

керелеасеинстакккуеуедспинлоккфромдпклевел

керелеасеинтерруптспинлокк

кересторефлоатингпоинтстате

кесавефлоатингпоинтстате

кесинчронизиксекутион

лукасиделисталлокатикс

лукасиделистфриекс

обреференцеобжектбихандле

псжеткуррентпроцесс

псжетпроцесскреатетимекуадпарт

псинитиалсистемпроцесс

псиссистемсреад

Чтение данных обратного вызова для проверки ошибок

ртлрунонцебегининитиализе

ртлрунонцекомплете

ртлрунонцеексекутеонце

ртлрунонцеинитиализе

рунонцеинитиализатион

Защита при запуске

сеакцессчекк

сеассигнсекурити

сеассигнсекуритекс