Jegyzet
Az oldalhoz való hozzáférés engedélyezést igényel. Próbálhatod be jelentkezni vagy könyvtárat váltani.
Az oldalhoz való hozzáférés engedélyezést igényel. Megpróbálhatod a könyvtár váltását.
Ez a cikk a Windows kernel átlátszatlan struktúráinak listáját és leírását tartalmazza. Sok ilyen struktúra esetében az illesztőprogramoknak nem szabad hozzáférniük vagy módosítaniuk a tagokat, hanem a rendszer által biztosított rutinokat kell használniuk az információk eléréséhez. A részletekért tekintse meg az egyes struktúrákat.
EPROCESS
Az EPROCESS-struktúra egy átlátszatlan struktúra, amely egy folyamat folyamatobjektumaként szolgál.
Egyes rutinok, például a PsGetProcessCreateTimeQuadPart, az EPROCESS használatával azonosítják a működéshez szükséges folyamatot. Az illesztőprogramok a PsGetCurrentProcess rutin használatával mutatót kaphatnak az aktuális folyamat folyamatobjektumához, és az ObReferenceObjectByHandle rutin használatával mutatót kaphatnak a megadott leíróhoz társított folyamatobjektumhoz. A PsInitialSystemProcess globális változó a rendszerfolyamat folyamatobjektumára mutat.
A folyamatobjektum egy Object Manager-objektum. Az illesztőknek az Objektumkezelő olyan rutinjait kell használniuk, mint az ObReferenceObject és az ObDereferenceObject az objektum referenciaszámának fenntartásához.
Fejléc: Wdm.h. Tartalmazza: Wdm.h, Ntddk.h, Ntifs.h.
ETHREAD
Az ETHREAD-struktúra egy átlátszatlan szerkezet, amely egy szál szálobjektumaként szolgál.
Egyes rutinok, például a PsIsSystemThread, az ETHREAD használatával azonosítják a szálat, amelyen működni szeretne. Az illesztőprogramok a PsGetCurrentThread rutin használatával mutatót kaphatnak az aktuális szál szálobjektumához, és az ObReferenceObjectByHandle rutin használatával mutatót kaphatnak a megadott fogóponthoz társított szálobjektumra.
A szálobjektum egy Object Manager-objektum. Az illesztőknek az Objektumkezelő olyan rutinjait kell használniuk, mint az ObReferenceObject és az ObDereferenceObject az objektum referenciaszámának fenntartásához.
Fejléc: Wdm.h. Tartalmazza: Wdm.h, Ntddk.h, Ntifs.h.
EX_RUNDOWN_REF
A EX_RUNDOWN_REF szerkezet egy átlátszatlan rendszerstruktúra, amely információkat tartalmaz a társított megosztott objektumok lefutás elleni védelmének állapotáról.
typedef struct _EX_RUNDOWN_REF {
... // opaque
} EX_RUNDOWN_REF, *PEX_RUNDOWN_REF;
A cikk végén felsorolt lefutásvédelmi rutinok mind egy EX_RUNDOWN_REF struktúrára mutatnak első paraméterként.
További információ: Run-Down Protection. Fejléc: Wdm.h. Wdm.h. belefoglalása.
EX_TIMER
A EX_TIMER szerkezet egy átlátszatlan struktúra, amelyet az operációs rendszer egy EX_TIMER időzítőobjektum ábrázolására használ.
typedef struct _EX_TIMER *PEX_TIMER;
Az struktúra összes tagja átlátszatlan az illesztőprogramok számára.
Az alábbi ExXxxidőzítő rutinokhoz egy, a rendszer által lefoglalt EX_TIMER struktúrára mutató mutatóra van szükség bemeneti paraméterként:
Az operációs rendszer EX_TIMER-alapú időzítőobjektumokat hoz létre. Egy ilyen időzítőobjektum lekéréséhez az illesztőprogram meghívja az ExAllocateTimer rutint . Ha az objektumra már nincs szükség, az illesztőprogram az ExDeleteTimer meghívásával törli az objektumot.
További információ: ExXxxidőzítő rutinok és EX_TIMER objektumok.
Fejléc: Wdm.h. Tartalmazza: Wdm.h, Ntddk.h, Ntifs.h.
FAST_MUTEX
A FAST_MUTEX szerkezet egy átlátszatlan adatszerkezet, amely gyors mutexet jelöl. Az ExInitializeFastMutex rutin inicializálja ezt a struktúrát.
A gyors mutexekkel kapcsolatos további információkért lásd: Fast Mutexes and Guarded Mutexes.
Fejléc: Wdm.h. Tartalmazza: Wdm.h, Ntddk.h, Ntifs.h.
IO_CSQ
A IO_CSQ struktúra egy átlátszatlan struktúra, amellyel megadhatja az illesztőprogram megszakításmentes IRP-üzenetsor-rutinjait. Ne állítsa be közvetlenül a struktúra tagjait. A struktúra inicializálásához használja az IoCsqInitialize vagy az IoCsqInitializeEx eszközt.
A megszakításbiztos IRP sorok használatának áttekintéséért tekintse meg Cancel-Safe IRP sorokat.
Elérhető a Microsoft Windows XP és a Windows operációs rendszer újabb verzióiban.
Fejléc: Wdm.h. Tartalmazza: Wdm.h, Ntddk.h, Ntifs.h.
IO_CSQ_IRP_CONTEXT
A IO_CSQ_IRP_CONTEXT struktúra egy átlátszatlan adatstruktúra, amellyel meghatározható az IRP-környezet az illesztőprogram megszakításmentes IRP-üzenetsorában. Az IoCsqInsertIrp, IoCsqInsertIrpEx és az IoCsqRemoveIrp rutinok ezt a struktúrát használják kulcsként az üzenetsor adott IRP-inak azonosításához.
A megszakításbiztos IRP sorok használatának áttekintéséért tekintse meg Cancel-Safe IRP sorokat.
Elérhető a Microsoft Windows XP és a Windows operációs rendszer újabb verzióiban.
Fejléc: Wdm.h. Tartalmazza: Wdm.h, Ntddk.h, Ntifs.h.
IO_WORKITEM
A IO_WORKITEM szerkezet egy átlátszatlan szerkezet, amely egy rendszermunkaszál munkaelemét írja le.
A sofőr a munkaelemet az IoAllocateWorkItem meghívásával foglalhatja le. Másik lehetőségként az illesztőprogram lefoglalhatja a saját pufferét, majd meghívhatja az IoInitializeWorkItem parancsot a puffer munkaelemként való inicializálásához.
Az IoAllocateWorkItem által lefoglalt munkaelemeket az IoFreeWorkItem-nek kell felszabadítania. Az IoInitializeWorkItem által inicializált memóriát az IoUninitializeWorkItem nem inicializálja , mielőtt felszabadítható lenne.
További információ a munkaelemekről: System Worker Threads.
Fejléc: Wdm.h. Tartalmazza: Wdm.h, Ntddk.h, Ntifs.h.
KBUGCHECK_CALLBACK_RECORD
A KBUGCHECK_CALLBACK_RECORD szerkezet egy átlátszatlan szerkezet, amelyet a KeRegisterBugCheckCallback és a KeDeregisterBugCheckCallback rutinok használnak.
A KBUGCHECK_CALLBACK_RECORD struktúrát a KeRegisterBugCheckReasonCallback és a KeDeregisterBugCheckReasonCallback rutinok használják a könyveléshez.
A struktúrát rezidens memóriában kell lefoglalni, például nem lapozott tárterületen. Használja a KeInitializeCallbackRecord rutint a struktúra inicializálásához a használat előtt.
Fejléc: Ntddk.h. Tartalmazza: Ntddk.h.
KBUGCHECK_REASON_CALLBACK_RECORD
A KBUGCHECK_REASON_CALLBACK_RECORD szerkezet egy átlátszatlan szerkezet, amelyet a KeRegisterBugCheckReasonCallback és a KeDeregisterBugCheckReasonCallback rutinok használnak.
A KBUGCHECK_REASON_CALLBACK_RECORD struktúrát a KeRegisterBugCheckReasonCallback és a KeDeregisterBugCheckReasonCallback rutinok használják a könyveléshez.
A struktúrát rezidens memóriában kell lefoglalni, például nem lapozott tárterületen. Használja a KeInitializeCallbackRecord rutint a struktúra inicializálásához a használat előtt.
Elérhető a Microsoft Windows XP-n a Service Pack 1 (SP1), a Windows Server 2003 és a Windows operációs rendszer újabb verzióival.
Fejléc: Ntddk.h. Tartalmazza: Ntddk.h.
KDPC
A KDPC-struktúra egy átlátszatlan szerkezet, amely egy DPC-objektumot jelöl. Ne állítsa be közvetlenül a struktúra tagjait. Lásd: DPC-objektumok és DPC-k.
Fejléc: Wdm.h. Tartalmazza: Wdm.h, Ntddk.h, Ntifs.h.
KFLOATING_SAVE
A KFLOATING_SAVE szerkezet egy átlátszatlan szerkezet, amely leírja a KeSaveFloatingPointState rutin által mentett lebegőpontos állapotot.
A lebegőpontos állapot visszaállításához használja a KeRestoreFloatingPointState-t .
Fejléc: Wdm.h. Tartalmazza: Wdm.h, Ntddk.h, Ntifs.h.
KGUARDED_MUTEX
A KGUARDED_MUTEX szerkezet egy átlátszatlan szerkezet, amely egy védett mutexet jelöl.
KeInitializeGuardedMutex használatával inicializálhat KGUARDED_MUTEX struktúrát védett mutexként.
A védett mutexeket nem lapított készletből kell lefoglalni.
További információért az őrzött mutexekről lásd a Gyors mutexek és védett mutexek című részt.
Fejléc: Wdm.h. Tartalmazza: Wdm.h, Ntddk.h, Ntifs.h.
KINTERRUPT
A KINTERRUPT-struktúra egy átlátszatlan szerkezet, amely a rendszer megszakítását jelöli.
Az IoConnectInterruptEx mutatót biztosít a KINTERRUPT struktúrához a megszakítás számára, amikor az illesztőprogram regisztrál egy InterruptService vagy InterruptMessageService rutint. Az illesztőprogram ezt a mutatót használja a megszakításhoz tartozó megszakítási forgózár megszerzésekor vagy felszabadításakor. Az illesztő ezt a mutatót is használja egy InterruptService-rutin regisztrációjának törlésekor.
Fejléc: Wdm.h. Tartalmazza: Wdm.h, Ntddk.h, Ntifs.h.
KLOCK_QUEUE_HANDLE
A KLOCK_QUEUE_HANDLE struktúra egy átlátszatlan struktúra, amely egy sorba állított spin-zárolást ír le. Az illesztőprogram lefoglalja a KLOCK_QUEUE_HANDLE struktúrát, és átadja azt a KeAcquireInStackQueuedSpinLock és KeAcquireInStackQueuedSpinLockAtDpcLevel függvényeknek a sorba állított pörgetési zár megszerzéséhez. Ezek a rutinok inicializálják a struktúrát, hogy az a sorban álló pörgetési zárolást jelölje. A meghajtó átadja a szerkezetet a KeReleaseInStackQueuedSpinLock és KeReleaseInStackQueuedSpinLockFromDpcLevel számára a spin lock feloldásakor.
További információ: Queued Spin Locks.
Fejléc: Wdm.h. Tartalmazza: Wdm.h, Ntddk.h, Ntifs.h.
KTIMER
A KTIMER-struktúra egy átlátszatlan szerkezet, amely egy időzítőobjektumot jelöl. Ne állítsa be közvetlenül a struktúra tagjait. További információ: Időzítőobjektumok és DPC-k.
Fejléc: Wdm.h. Tartalmazza: Wdm.h, Ntddk.h, Ntifs.h.
LOOKASIDE_LIST_EX
A LOOKASIDE_LIST_EX szerkezet egy lookaside listát ír le.
typedef struct _LOOKASIDE_LIST_EX {
... // opaque
} LOOKASIDE_LIST_EX, *PLOOKASIDE_LIST_EX;
A lookaside-lista rögzített méretű pufferek készlete, amelyeket az illesztőprogram helyileg kezelhet a rendszerfoglalási rutinok hívásainak számának csökkentése érdekében. A hívások számának csökkentése javítja a teljesítményt. A pufferek egységes méretűek, és a lookaside listában bejegyzésként vannak tárolva.
Az illesztőprogramoknak átlátszatlanként kell kezelnie a LOOKASIDE_LIST_EX szerkezetet. Előfordulhat, hogy a struktúratagokhoz hozzáférő vagy a tagok helyétől függő illesztőprogramok nem maradnak hordozhatóak és más illesztőprogramokkal együttműködve.
A Kapcsolódó cikkek szakasz felsorolja azokat a rutinokat, amelyek ezt a struktúrát használják.
A lookaside listákról további információt a Lookaside-listák használata című témakörben talál.
A 64 bites platformokon ennek a struktúrának 16 bájtosnak kell lennie.
Fejléc: Wdm.h. Tartalmazza: Wdm.h, Ntddk.h, Ntifs.h.
NPAGED_LOOKASIDE_LIST
A NPAGED_LOOKASIDE_LIST szerkezet egy átlátszatlan struktúra, amely a nem lapozott készletből lefoglalt rögzített méretű pufferek lookaside-listáját írja le. A rendszer új bejegyzéseket hoz létre, és szükség esetén megsemmisíti a lista nem használt bejegyzéseit. Rögzített méretű pufferek esetén a lookaside-lista használata gyorsabb, mint a memória közvetlen kiosztása.
Az ExInitializeNPagedLookasideList használatával inicializálhatja a lookaside listát. Az ExAllocateFromNPagedLookasideList használatával foglaljon le egy puffert a listából, az ExFreeToNPagedLookasideList pedig puffert adjon vissza a listához.
Az illesztőprogramoknak mindig expliciten kell felszabadítaniuk az általuk létrehozott lookaside listákat a kirakodás előtt. Az, hogy másképp cselekszik, súlyos programozási hiba. Az ExDeleteNPagedLookasideList használatával szabadíthatja fel a listát.
Az illesztőprogramok a lapozott készlethez is használhatnak lookaside-listákat. A PAGED_LOOKASIDE_LIST-struktúra lapszámozott puffereket tartalmazó lookaside-listát ír le. A LOOKASIDE_LIST_EX-struktúra leírhatja a lapszámozott vagy nem lapszámozott puffereket tartalmazó lookaside-listát. További információ: Lookaside-listák használata.
A 64 bites platformokon ennek a struktúrának 16 bájtosnak kell lennie.
Fejléc: Wdm.h. Tartalmazza: Wdm.h, Ntddk.h, Ntifs.h.
OBJEKTUM_TÍPUS
OBJECT_TYPE egy átlátszatlan szerkezet, amely meghatározza a fogantyú objektumtípusát. További információ: ObReferenceObjectByHandle.
Fejléc: Wdm.h. Tartalmazza: Wdm.h, Ntddk.h, Ntifs.h.
PAGED_LOOKASIDE_LIST
A PAGED_LOOKASIDE_LIST struktúra egy átlátszatlan struktúra, amely egy lapozott készletből lefoglalt rögzített méretű puffereket tartalmazó lookaside-listát ír le. A rendszer új bejegyzéseket hoz létre, és szükség esetén megsemmisíti a lista nem használt bejegyzéseit. Rögzített méretű pufferek esetén a lookaside-lista használata gyorsabb, mint a memória közvetlen kiosztása.
Az ExInitializePagedLookasideList használatával inicializálhatja a lookaside listát. Az ExAllocateFromPagedLookasideList használatával foglaljon le egy puffert a listából, az ExFreeToPagedLookasideList pedig puffert adjon vissza a listához.
Az illesztőprogramoknak mindig expliciten kell felszabadítaniuk az általuk létrehozott lookaside listákat a kirakodás előtt. Az, hogy másképp cselekszik, súlyos programozási hiba. Az ExDeletePagedLookasideList használatával szabadíthatja fel a listát.
Az illesztőprogramok bepillantó listákat is használhatnak a nem lapozott tárterülethez. A NPAGED_LOOKASIDE_LIST struktúra egy nem lapozott pufferokat tartalmazó lookaside listát jellemez. A LOOKASIDE_LIST_EX-struktúra leírhatja a lapszámozott vagy nem lapszámozott puffereket tartalmazó lookaside-listát. További információ: Lookaside-listák használata.
A 64 bites platformokon ennek a struktúrának 16 bájtosnak kell lennie.
Fejléc: Wdm.h. Tartalmazza: Wdm.h, Ntddk.h, Ntifs.h.
RTL_BITKÉP
A RTL_BITMAP szerkezet egy átlátszatlan szerkezet, amely bitképet ír le.
typedef struct _RTL_BITMAP {
// opaque
} RTL_BITMAP, *PRTL_BITMAP;
Ne érje el közvetlenül a struktúra tagjait. Előfordulhat, hogy azok az illesztőprogramok, amelyek függenek a tagok helyétől, vagy amelyek közvetlenül férnek hozzá a tagértékekhez, nem kompatibilisek maradnak a Windows operációs rendszer jövőbeli verzióival.
A RTL_BITMAP struktúra egy általános célú, egydimenziós, tetszőleges hosszúságú bitkép fejléceként szolgál. Az illesztőprogramok az ilyen bitképeket gazdaságos módszerként használhatják az újrahasználható elemek nyomon követésére. A fájlrendszer például bitképekkel követheti nyomon, hogy a merevlemezen mely fürtök és szektorok vannak már lefoglalva a fájladatok tárolásához.
A RTL_BITMAP struktúrákat használó RtlXxx rutinok listáját a Kapcsolódó cikkek szakaszban találja. Ezen RtlXxx rutinok hívója felelős a RTL_BITMAP struktúrához és a bitképet tartalmazó pufferhez tartozó tároló kiosztásáért. Ennek a puffernek 4 bájtos határon kell kezdődnie a memóriában, és 4 bájt hosszúságú többszörösének kell lennie. A bitkép a puffer elején kezdődik, de tetszőleges számú bitet tartalmazhat, amelyek elférnek a lefoglalt pufferben.
Mielőtt egy RTL_BITMAP struktúrát paraméterként megadna egy RtlXxx rutinnak, hívja meg az RtlInitializeBitMap rutint a struktúra inicializálására. A rutin bemeneti paraméterei egy pufferre mutató mutató, amely tartalmazza a bitképet, valamint a bitkép méretét bitekben. Az RtlInitializeBitMap nem módosítja a puffer tartalmát.
Ha a hívó lefoglalja a tárterületet a RTL_BITMAP struktúrához és a bitképhez a lapozott memóriában, akkor a hívónak irQL <= APC_LEVEL kell futnia, amikor a kapcsolódó cikkek szakaszban felsorolt RtlXxx rutinok egyikének paraméterként átadja a szerkezetre mutató mutatót. Ha a hívó lefoglalja a tárterületet a nem lapozott memóriából (vagy ezzel egyenértékűen a zárolt lapozott memóriából), a hívó bármilyen IRQL-n futhat, amikor meghívja az RtlXxx rutint.
Fejléc: Wdm.h. Tartalmazza: Wdm.h, Ntddk.h, Ntifs.h.
RTL_RUN_ONCE
A RTL_RUN_ONCE szerkezet egy átlátszatlan struktúra, amely egy egyszeri inicializálás információinak tárolására szolgál.
Az illesztőprogramoknak inicializálni kell ezt a struktúrát az RtlRunOnceInitialize rutin meghívásával, mielőtt átadják azt bármely más RtlRunOnceXxx rutinnak.
Fejléc: Ntddk.h. Tartalmazza: Ntddk.h.
BIZTONSÁGI_ALANY_KONTEXTUS
A SECURITY_SUBJECT_CONTEXT szerkezet egy átlátszatlan szerkezet, amely azt a biztonsági környezetet jelöli, amelyen belül egy adott művelet zajlik. A biztonsági döntések meghozatalához az illesztőprogramok nem módosíthatják, és nem próbálhatnak meg közvetlenül hozzáférni a struktúra bármelyik tagjához. Ehelyett az engedélyezés során felmerülő biztonsági problémák elkerülése érdekében adja át ezt az átlátszatlan struktúrát a SeAccessCheck vagy a SePrivilegeCheck hívásaiban.
Fejléc: Wdm.h. Tartalmazza: Wdm.h, Ntddk.h, Ntifs.h.
SLIST_HEADER
A SLIST_HEADER szerkezet egy átlátszatlan struktúra, amely egy sorrendbe rendezett, egymáshoz csatolt lista fejléceként szolgál. További információ: Egyszerűen és kétszeresen összefűzött listák.
64 bites platformokon SLIST_HEADER struktúráknak 16 bájtosnak kell lenniük.
Fejléc: Wdm.h. Tartalmazza: Wdm.h, Ntddk.h, Ntifs.h.
XSTATE_SAVE
A XSTATE_SAVE struktúra egy átlátszatlan struktúra, amely leírja a kernel módú illesztőprogram által mentett és visszaállított kiterjesztett processzorállapot-információkat.
typedef struct _XSTATE_SAVE {
... // opaque
} XSTATE_SAVE, *PXSTATE_SAVE;
Minden tag átlátszatlan.
A KeSaveExtendedProcessorState és a KeRestoreExtendedProcessorState rutinok ezt a struktúrát használják.
Fejléc: Wdm.h. Tartalmazza: Wdm.h, Ntddk.h, Ntifs.h.
Kapcsolódó cikkek
ExAllocateFromNPagedLookasideList
ExAllocateFromPagedLookasideList
ExInitializePagedLookasideList
ExInitializeNPagedLookasideList
IoAllocateWorkItem
KeAcquireInStackQueuedSpinLock
KeAcquireInStackQueuedSpinLockAtDpcLevel
KeRestoreExtendedProcessorState
KeDeregisterBugCheckReasonCallback
KeRegisterBugCheckReasonCallback
KeReleaseInStackQueuedSpinLock
KeReleaseInStackQueuedSpinLockFromDpcLevel
PsGetProcessCreateTimeQuadPart