Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Tento článek uvádí a popisuje neprůžné struktury jádra Windows. U mnoha těchto struktur by ovladače neměly přistupovat ani měnit žádné členy, ale měly by místo toho pro přístup k informacím používat rutiny poskytované systémem. Podrobnosti najdete v jednotlivých strukturách.
EPROCESS
Struktura EPROCESS je neprůhlená struktura, která slouží jako objekt procesu procesu.
Některé rutiny, jako je PsGetProcessCreateTimeQuadPart, používají EPROCESS k identifikaci procesu, na kterém se má pracovat. Ovladače mohou pomocí PsGetCurrentProcess získat ukazatel na objekt procesu pro aktuální proces a mohou pomocí ObReferenceObjectByHandle získat ukazatel na objekt procesu, který je spojený se zadaným popisovačem. Globální proměnná PsInitialSystemProcess odkazuje na objekt procesu pro systémový proces.
Objekt procesu je objekt Správce objektů. Ovladače by měly používat rutiny Object Manageru, jako jsou ObReferenceObject a ObDereferenceObject , k zachování referenčního počtu objektů.
Hlavička: Wdm.h. Zahrnout soubory: Wdm.h, Ntddk.h, Ntifs.h.
ETHREAD
ETHREAD struktura je neprůhledná struktura, která slouží jako objekt vlákna pro vlákno.
Některé rutiny, například PsIsSystemThread, používají ETHREAD k identifikaci vlákna, na kterém se má pracovat. Ovladače mohou pomocí rutiny PsGetCurrentThread získat ukazatel na objekt vlákna pro aktuální vlákno a mohou použít rutinu ObReferenceObjectByHandle k získání ukazatele na objekt vlákna, který je přidružen k zadanému popisovači.
Objekt vlákna je objekt Správce objektů. Ovladače by měly používat rutiny Object Manageru, jako jsou ObReferenceObject a ObDereferenceObject , k zachování referenčního počtu objektů.
Hlavička: Wdm.h. Zahrnout soubory: Wdm.h, Ntddk.h, Ntifs.h.
EX_RUNDOWN_REF
Struktura EX_RUNDOWN_REF je neprůhlená systémová struktura, která obsahuje informace o stavu ochrany běhu pro přidružený sdílený objekt.
typedef struct _EX_RUNDOWN_REF {
... // opaque
} EX_RUNDOWN_REF, *PEX_RUNDOWN_REF;
Rutiny ochrany rundown uvedené na konci tohoto článku předávají ukazatel na strukturu EX_RUNDOWN_REF jako svůj první parametr.
Další informace najdete v tématu Run-Down Protection. Hlavička: Wdm.h. Zahrňte Wdm.h.
EX_TIMER
EX_TIMER struktura je neprůhlená struktura, kterou operační systém používá k reprezentaci EX_TIMER objekt časovače.
typedef struct _EX_TIMER *PEX_TIMER;
Všichni členové této struktury jsou neprůhlení pro ovladače.
Následující rutiny časovače ExXxx vyžadují ukazatel na systém přidělenou strukturu EX_TIMER jako vstupní parametr:
Operační systém vytváří objekty založené na EX_TIMER. Chcete-li získat takový objekt časovače, ovladač volá rutinu ExAllocateTimer . Pokud tento objekt již není potřeba, ovladač je zodpovědný za odstranění objektu voláním ExDeleteTimer.
Další informace naleznete v tématu ExXxxRutiny časovače a EX_TIMER objekty.
Hlavička: Wdm.h. Zahrnout soubory: Wdm.h, Ntddk.h, Ntifs.h.
FAST_MUTEX
Struktura FAST_MUTEX je neprůhledná datová struktura, která představuje rychlý mutex. Rutina ExInitializeFastMutex inicializuje tuto strukturu.
Další informace o rychlých mutexech naleznete v tématu Fast Mutexes a Guarded Mutexes.
Hlavička: Wdm.h. Zahrnout soubory: Wdm.h, Ntddk.h, Ntifs.h.
IO_CSQ
Struktura IO_CSQ je neprůhledná struktura, která se používá k určení rutin fronty bezpečného zrušení ovladače. Nenastavujte členy této struktury přímo. K inicializaci této struktury použijte IoCsqInitialize nebo IoCsqInitializeEx.
Přehled o použití front IRP bezpečných proti zrušení viz Cancel-Safe fronty IRP.
K dispozici v systému Microsoft Windows XP a novějších verzích operačního systému Windows.
Hlavička: Wdm.h. Zahrnout soubory: Wdm.h, Ntddk.h, Ntifs.h.
IO_CSQ_IRP_CONTEXT
Struktura IO_CSQ_IRP_CONTEXT je neprůhledná datová struktura, která slouží k určení kontextu IRP pro IRP ve frontě IRP zajišťující bezpečné rušení v ovladači. Rutiny IoCsqInsertIrp, IoCsqInsertIrpEx a IoCsqRemoveIrp používají tuto strukturu jako klíč k identifikaci konkrétních IP adres ve frontě.
Přehled o použití front IRP bezpečných proti zrušení viz Cancel-Safe fronty IRP.
K dispozici v systému Microsoft Windows XP a novějších verzích operačního systému Windows.
Hlavička: Wdm.h. Zahrnout soubory: Wdm.h, Ntddk.h, Ntifs.h.
IO_WORKITEM
Struktura IO_WORKITEM je neprůhlená struktura, která popisuje pracovní položku pro systémové pracovní vlákno.
Ovladač může přidělit pracovní položku voláním IoAllocateWorkItem. Případně může ovladač přidělit vlastní vyrovnávací paměť a potom volat IoInitializeWorkItem , aby inicializoval tuto vyrovnávací paměť jako pracovní položku.
Všechny pracovní položky, které IoAllocateWorkItem přidělí, musí být uvolněny službou IoFreeWorkItem. Všechny paměti inicializované službou IoInitializeWorkItem musí být neinicializovány službou IoUninitializeWorkItem , aby bylo možné ji uvolnit.
Další informace o pracovních položkách naleznete v tématu Systémové pracovní vlákna.
Hlavička: Wdm.h. Zahrnout soubory: Wdm.h, Ntddk.h, Ntifs.h.
KBUGCHECK_CALLBACK_RECORD
Struktura KBUGCHECK_CALLBACK_RECORD je neprůzraká struktura, kterou používají rutiny KeRegisterBugCheckCallback a KeDeregisterBugCheckCallback .
Strukturu KBUGCHECK_CALLBACK_RECORD používá rutiny KeRegisterBugCheckReasonCallback a KeDeregisterBugCheckReasonCallback pro uchovávání knih.
Struktura musí být přidělena v rezidentní paměti, například v nestránkovaném fondu. K inicializaci struktury před použitím použijte rutinu KeInitializeCallbackRecord .
Hlavička: Ntddk.h. Zahrnout hlavičkový soubor: Ntddk.h.
KBUGCHECK_REASON_CALLBACK_RECORD
Struktura KBUGCHECK_REASON_CALLBACK_RECORD je neprůzraká struktura, kterou používají rutiny KeRegisterBugCheckReasonCallback a KeDeregisterBugCheckReasonCallback .
Strukturu KBUGCHECK_REASON_CALLBACK_RECORD používá rutiny KeRegisterBugCheckReasonCallback a KeDeregisterBugCheckReasonCallback pro uchovávání knih.
Struktura musí být přidělena v rezidentní paměti, například v nestránkovaném fondu. K inicializaci struktury před použitím použijte rutinu KeInitializeCallbackRecord .
K dispozici v systému Microsoft Windows XP s aktualizací Service Pack 1 (SP1), Windows Server 2003 a novějšími verzemi operačního systému Windows.
Hlavička: Ntddk.h. Zahrnout hlavičkový soubor: Ntddk.h.
KDPC
Struktura KDPC je neprůhlená struktura, která představuje objekt DPC. Nenastavujte členy této struktury přímo. Viz objekty DPC a DPC.
Hlavička: Wdm.h. Zahrnout soubory: Wdm.h, Ntddk.h, Ntifs.h.
KFLOATING_SAVE
Struktura KFLOATING_SAVE je neprůhledná struktura, která popisuje stav pohyblivé řádové čárky, který uložila rutina KeSaveFloatingPointState.
Použijte KeRestoreFloatingPointState k obnovení stavu s plovoucí desetinnou čárkou.
Hlavička: Wdm.h. Zahrnout soubory: Wdm.h, Ntddk.h, Ntifs.h.
KGUARDED_MUTEX
Struktura KGUARDED_MUTEX je neprůhledná struktura, která představuje strážený mutex.
KeInitializeGuardedMutex použijte k inicializaci struktury KGUARDED_MUTEX jako strážené mutex.
Strážené mutexy musí být přiděleny z nepaginačního fondu.
Další informace o strážených mutexech naleznete v tématu Fast Mutexes a Guarded Mutexes.
Hlavička: Wdm.h. Zahrnout soubory: Wdm.h, Ntddk.h, Ntifs.h.
KINTERRUPT
Struktura KINTERRUPT je neprůhlená struktura, která představuje přerušení systému.
IoConnectInterruptEx poskytuje ukazatel na strukturu KINTERRUPT pro přerušení, když ovladač zaregistruje rutinu InterruptService nebo InterruptMessageService . Ovladač používá tento ukazatel při získání nebo uvolnění zámku otáčení přerušení pro přerušení. Ovladač také používá tento ukazatel při zrušení registrace rutiny InterruptService .
Hlavička: Wdm.h. Zahrnout soubory: Wdm.h, Ntddk.h, Ntifs.h.
KLOCK_QUEUE_HANDLE
Struktura KLOCK_QUEUE_HANDLE je neprůhledná struktura, která popisuje zámek ve frontě. Ovladač přidělí strukturu KLOCK_QUEUE_HANDLE a předá ji KeAcquireInStackQueuedSpinLock a KeAcquireInStackQueuedSpinLockAtDpcLevel, aby získal frontový spinový zámek. Tyto rutiny inicializují strukturu, aby reprezentovala zařazený otočný zámek. Řidič předá strukturu funkcím KeReleaseInStackQueuedSpinLock a KeReleaseInStackQueuedSpinLockFromDpcLevel při uvolňování spinového zámku.
Další informace najdete v tématu Spinlocky ve frontě.
Hlavička: Wdm.h. Zahrnout soubory: Wdm.h, Ntddk.h, Ntifs.h.
KTIMER
Struktura KTIMER je neprůhlé struktury, která představuje objekt časovače. Nenastavujte členy této struktury přímo. Další informace naleznete v tématu Timer Objects a DPCs.
Hlavička: Wdm.h. Zahrnout soubory: Wdm.h, Ntddk.h, Ntifs.h.
LOOKASIDE_LIST_EX
Struktura LOOKASIDE_LIST_EX popisuje vyhledávací seznam.
typedef struct _LOOKASIDE_LIST_EX {
... // opaque
} LOOKASIDE_LIST_EX, *PLOOKASIDE_LIST_EX;
Vyhledávací seznam je fond vyrovnávacích pamětí s pevnou velikostí, které může ovladač spravovat místně, aby snížil počet volání rutin přidělení systému. Snížení těchto volání zvyšuje výkon. Vyrovnávací paměti mají stejnou velikost a ukládají se jako položky v pohotovostním seznamu.
Ovladače by měly zacházet se strukturou LOOKASIDE_LIST_EX jako s neprůhlednou strukturou. Ovladače, které přistupují k členům struktury nebo které mají závislosti na umístění těchto členů, nemusí zůstat přenosné a interoperabilní s jinými ovladači.
Oddíl Související články obsahuje seznam rutin, které používají tuto strukturu.
Další informace o vyhledávacích seznamech naleznete v tématu Použití seznamů lookaside.
Na 64bitových platformách musí být tato struktura zarovnaná na 16 bajtů.
Hlavička: Wdm.h. Zahrnout soubory: Wdm.h, Ntddk.h, Ntifs.h.
NPAGED_LOOKASIDE_LIST
Struktura NPAGED_LOOKASIDE_LIST je neprůhlená struktura, která popisuje seznam vyrovnávacích pamětí s pevnou velikostí přidělených z nestránkového fondu. Systém vytvoří nové položky a podle potřeby zničí nepoužité položky v seznamu. U vyrovnávacích pamětí s pevnou velikostí je použití vyhledávacího seznamu rychlejší než přímé přidělování paměti.
K inicializaci seznamu vyhledávání použijte ExInitializeNPagedLookasideList. Pomocí ExAllocateFromNPagedLookasideList alokujte buffer ze seznamu a ExFreeToNPagedLookasideList vrátíte buffer do seznamu.
Ovladače musí vždy explicitně uvolnit všechny seznamy proložení, které vytvoří, před jejich odinstalováním. Je to závažná chyba programování, aby jinak. K uvolnění seznamu použijte ExDeleteNPagedLookasideList .
Ovladače můžou také používat vyhledávací seznamy pro stránkovaný fond. Struktura PAGED_LOOKASIDE_LIST popisuje seznam pro odkládání, který obsahuje stránkované buffery. Struktura LOOKASIDE_LIST_EX může popisovat vyhledávací seznam, který obsahuje stránkované nebo nestránkové vyrovnávací paměti. Další informace naleznete v tématu Použití seznamů lookaside.
Na 64bitových platformách musí být tato struktura zarovnaná na 16 bajtů.
Hlavička: Wdm.h. Zahrnout soubory: Wdm.h, Ntddk.h, Ntifs.h.
TYP_OBJEKTU
OBJECT_TYPE je neprůhledná datová struktura, která představuje typ objektu pro popisovač. Další informace naleznete v tématu ObReferenceObjectByHandle.
Hlavička: Wdm.h. Zahrnout soubory: Wdm.h, Ntddk.h, Ntifs.h.
PAGED_LOOKASIDE_LIST
Struktura PAGED_LOOKASIDE_LIST je neprůhlená struktura, která popisuje seznam vyrovnávacích pamětí s pevnou velikostí přidělených stránkovaným fondem. Systém vytvoří nové položky a podle potřeby zničí nepoužité položky v seznamu. U vyrovnávacích pamětí s pevnou velikostí je použití vyhledávacího seznamu rychlejší než přímé přidělování paměti.
K inicializaci seznamu vyhledávání použijte exInitializePagedLookasideList . Pomocí ExAllocateFromPagedLookasideList přidělte vyrovnávací paměť ze seznamu a použijte ExFreeToPagedLookasideList pro vrácení vyrovnávací paměti do seznamu.
Ovladače musí vždy explicitně uvolnit všechny seznamy proložení, které vytvoří, před jejich odinstalováním. Je to závažná chyba programování, aby jinak. K uvolnění seznamu použijte ExDeletePagedLookasideList .
Ovladače můžou také používat seznamy vyhledávání pro nestránkovaný fond. Struktura NPAGED_LOOKASIDE_LIST popisuje odložený seznam, který obsahuje nestránkové mezipaměti. Struktura LOOKASIDE_LIST_EX může popisovat vyhledávací seznam, který obsahuje stránkované nebo nestránkové vyrovnávací paměti. Další informace naleznete v tématu Použití seznamů lookaside.
Na 64bitových platformách musí být tato struktura zarovnaná na 16 bajtů.
Hlavička: Wdm.h. Zahrnout soubory: Wdm.h, Ntddk.h, Ntifs.h.
RTL_BITMAP
RTL_BITMAP struktura je neprůhlená struktura, která popisuje bitmapu.
typedef struct _RTL_BITMAP {
// opaque
} RTL_BITMAP, *PRTL_BITMAP;
Nepřistupujte přímo ke členům této struktury. Ovladače, které mají závislosti na umístěních členů nebo které přistupují k hodnotám členů přímo, nemusí zůstat kompatibilní s budoucími verzemi operačního systému Windows.
Struktura RTL_BITMAP slouží jako záhlaví pro univerzální jednorozměrný rastrový obrázek libovolné délky. Ovladač může takový rastrový obrázek použít jako ekonomický způsob, jak sledovat sadu opakovaně použitelných položek. Například systém souborů může pomocí rastrových obrázků sledovat, které clustery a sektory na pevném disku již byly přiděleny k uložení dat souborů.
Seznam rutin RtlXxx , které používají RTL_BITMAP struktury, naleznete v části Související články . Volající těchto rutin RtlXxx je odpovědný za přidělení úložiště pro strukturu RTL_BITMAP a pro vyrovnávací paměť, která obsahuje bitmapu. Tato vyrovnávací paměť musí začínat na hranici 4 bajtů v paměti a musí být násobkem 4 bajtů v délce. Rastrový obrázek začíná na začátku vyrovnávací paměti, ale může obsahovat libovolný počet bitů, které se vejdou do přidělené vyrovnávací paměti.
Před zadáním struktury RTL_BITMAP jako parametru pro rutinu RtlXxx, zavolejte rutinu RtlInitializeBitMap k inicializaci struktury. Vstupními parametry této rutiny jsou ukazatel na vyrovnávací paměť, která obsahuje bitovou mapu, a velikost této bitové mapy v bitech. RtlInitializeBitMap nemění obsah této vyrovnávací paměti.
Pokud volající přiděluje úložiště pro strukturu RTL_BITMAP a bitmapu v stránkované paměti, volající musí být spuštěn v IRQL <= APC_LEVEL, když předá ukazatel na tuto strukturu jako parametr některé rutiny RtlXxx uvedené v části Související články . Pokud volající přiděluje úložiště z nestránkové paměti (nebo obdobně z uzamčené stránkované paměti), může pracovat na libovolné úrovni IRQL, když volá rutinu RtlXxx.
Hlavička: Wdm.h. Zahrnout soubory: Wdm.h, Ntddk.h, Ntifs.h.
RTL_RUN_ONCE
Struktura RTL_RUN_ONCE je neprůhlená struktura, která ukládá informace pro jednorázovou inicializaci.
Ovladače musí tuto strukturu inicializovat voláním rutiny RtlRunOnceInitialize před předáním do jiných rutin RtlRunOnceXxx .
Hlavička: Ntddk.h. Zahrnout soubor: Ntddk.h.
SECURITY_SUBJECT_CONTEXT
SECURITY_SUBJECT_CONTEXT struktura je neprůhlená struktura, která představuje kontext zabezpečení, ve kterém probíhá konkrétní operace. Ovladače nesmí měnit ani se pokoušet o přímý přístup ke všem členům této struktury, aby se mohli rozhodovat o zabezpečení. Místo toho, abyste se vyhnuli problémům se zabezpečením při autorizaci, předejte tuto neprůzrakou strukturu ve voláních SeAccessCheck nebo SePrivilegeCheck.
Hlavička: Wdm.h. Zahrnout soubory: Wdm.h, Ntddk.h, Ntifs.h.
SLIST_HEADER
Struktura SLIST_HEADER je neprůhledná struktura, která slouží jako záhlaví pro seskupený seznam s jedním propojením. Další informace naleznete v tématu Jednosměrné a dvojitě propojené seznamy.
Na 64bitových platformách musí být struktury SLIST_HEADER zarovnané na 16 bajtů.
Hlavička: Wdm.h. Zahrnout soubory: Wdm.h, Ntddk.h, Ntifs.h.
XSTATE_SAVE
Struktura XSTATE_SAVE je neprůhlásná struktura, která popisuje rozšířené informace o stavu procesoru, které ovladač v režimu jádra ukládá a obnovuje.
typedef struct _XSTATE_SAVE {
... // opaque
} XSTATE_SAVE, *PXSTATE_SAVE;
Všichni členové jsou neprůhlední.
Rutiny KeSaveExtendedProcessorState a KeRestoreExtendedProcessorState používají tuto strukturu.
Hlavička: Wdm.h. Zahrnout soubory: Wdm.h, Ntddk.h, Ntifs.h.
Související články
ExAllocateFromNPagedLookasideList
ExAllocateFromPagedLookasideList
ExInitializePagedLookasideList
ExInitializeNPagedLookasideList
KeAcquireInStackQueuedSpinLock
KeAcquireInStackQueuedSpinLockAtDpcLevel
KeRestoreExtendedProcessorState
KeDeregisterBugCheckReasonCallback
KeRegisterBugCheckReasonCallback
KeReleaseInStackQueuedSpinLock
KeReleaseInStackQueuedSpinLockFromDpcLevel
PsGetProcessCreateTimeQuadPart