Aracılığıyla paylaş


Windows çekirdek opak yapıları

Bu makalede Windows çekirdek opak yapıları listelenip açıklanmaktadır. Bu yapıların çoğu için sürücülerin herhangi bir üyeye erişmemesi veya bunları değiştirmemesi, bunun yerine bilgilere erişmek için sistem tarafından sağlanan yordamları kullanması gerekir. Ayrıntılar için her yapıya bakın.

EPROCESS

EPROCESS yapısı, bir işlemin işlem nesnesi olarak hizmet veren opak bir yapıdır.

PsGetProcessCreateTimeQuadPart gibi bazı yordamlar, üzerinde çalışılması gereken işlemi tanımlamak için EPROCESS kullanır. Sürücüler, geçerli işlemin işlem nesnesine bir işaretçi almak için PsGetCurrentProcess yordamını kullanabilir ve belirtilen tanıtıcıyla ilişkili işlem nesnesine işaretçi almak için ObReferenceObjectByHandle yordamını kullanabilir. PsInitialSystemProcess genel değişkeni, sistem işleminin işlem nesnesini gösterir.

İşlem nesnesi bir Nesne Yöneticisi nesnesidir. Sürücüler nesnenin başvuru sayısını korumak için ObReferenceObject ve ObDereferenceObject gibi Nesne Yöneticisi yordamlarını kullanmalıdır.

Üst bilgi: Wdm.h. Dahil: Wdm.h, Ntddk.h, Ntifs.h.

ETHREAD

ETHREAD yapısı, bir iş parçacığı için iş parçacığı nesnesi olarak hizmet veren opak bir yapıdır.

PsIsSystemThread gibi bazı yordamlar, üzerinde çalışılması gereken iş parçacığını tanımlamak için ETHREAD kullanır. Sürücüler, geçerli iş parçacığı için iş parçacığı nesnesine bir işaretçi almak amacıyla PsGetCurrentThread rutinini kullanabilir ve belirtilen tutamakla ilişkili iş parçacığı nesnesine işaretçi almak için ObReferenceObjectByHandle rutinini kullanabilir.

Bir iş parçacığı nesnesi, Nesne Yöneticisi'nin bir nesnesidir. Sürücüler nesnenin başvuru sayısını korumak için ObReferenceObject ve ObDereferenceObject gibi Nesne Yöneticisi yordamlarını kullanmalıdır.

Üst bilgi: Wdm.h. Dahil: Wdm.h, Ntddk.h, Ntifs.h.

EX_RUNDOWN_REF

EX_RUNDOWN_REF yapısı, ilişkili bir paylaşılan nesne için rundown korumasının durumu hakkında bilgi içeren opak bir sistem yapısıdır.

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

Bu makalenin sonunda listelenen rundown koruma yordamlarının tümü, ilk parametre olarak bir EX_RUNDOWN_REF yapısına işaretçi alır.

Daha fazla bilgi için bkz. Run-Down Koruması. Üst bilgi: Wdm.h. Wdm.h.'i dahil edin.

EX_TIMER

EX_TIMER yapısı, işletim sisteminin EX_TIMER zamanlayıcı nesnesini temsil etmek için kullandığı opak bir yapıdır.

typedef struct _EX_TIMER *PEX_TIMER;

Bu yapının tüm üyeleri sürücüler için erişilemezdir.

Aşağıdaki ExXxxZamanlayıcı yordamları, giriş parametresi olarak sistem tarafından ayrılmış bir EX_TIMER yapısına yönelik bir işaretçi gerektirir:

İşletim sistemi EX_TIMER tabanlı zamanlayıcı nesneleri oluşturur. Böyle bir zamanlayıcı nesnesi almak için sürücünüz ExAllocateTimer yordamını çağırır. Bu nesne artık gerekli olmadığında, sürücü ExDeleteTimer'ı çağırarak nesneyi silmekle sorumludur.

Daha fazla bilgi için bkz. ExXxxZamanlayıcı Yordamları ve EX_TIMER Nesneleri.

Üst bilgi: Wdm.h. Dahil: Wdm.h, Ntddk.h, Ntifs.h.

FAST_MUTEX

FAST_MUTEX yapısı, hızlı bir mutex'i temsil eden opak bir veri yapısıdır. ExInitializeFastMutex yordamı bu yapıyı başlatır.

Hızlı mutex'ler ve korumalı mutex'ler hakkında daha fazla bilgi için bkz. Fast Mutexes ve Guarded Mutexes.

Üst bilgi: Wdm.h. Dahil: Wdm.h, Ntddk.h, Ntifs.h.

IO_CSQ

IO_CSQ yapısı, sürücünün iptal güvenli IRP kuyruğu yordamlarını belirtmek için kullanılan opak bir yapıdır. Bu yapının üyelerini doğrudan ayarlamayın. Bu yapıyı başlatmak için IoCsqInitialize veya IoCsqInitializeEx kullanın.

İptal güvenli IRP kuyruklarının nasıl kullanılacağına genel bakış için bkz. Cancel-Safe IRP Kuyrukları.

Microsoft Windows XP ve Windows işletim sisteminin sonraki sürümlerinde kullanılabilir.

Üst bilgi: Wdm.h. Dahil: Wdm.h, Ntddk.h, Ntifs.h.

IO_CSQ_IRP_CONTEXT

IO_CSQ_IRP_CONTEXT yapısı, sürücünün iptal güvenli IRP kuyruğundaki bir IRP için IRP bağlamını belirtmek için kullanılan opak bir veri yapısıdır. IoCsqInsertIrp, IoCsqInsertIrpEx ve IoCsqRemoveIrp yordamları, kuyruktaki belirli IRP'leri tanımlamak için bu yapıyı anahtar olarak kullanır.

İptal güvenli IRP kuyruklarının nasıl kullanılacağına genel bakış için bkz. Cancel-Safe IRP Kuyrukları.

Microsoft Windows XP ve Windows işletim sisteminin sonraki sürümlerinde kullanılabilir.

Üst bilgi: Wdm.h. Dahil: Wdm.h, Ntddk.h, Ntifs.h.

IO_WORKITEM

IO_WORKITEM yapısı, sistem çalışan iş parçacığı için bir iş öğesini açıklayan opak bir yapıdır.

Bir sürücü IoAllocateWorkItem çağrısı yaparak bir iş öğesi ayırabilir. Alternatif olarak, bir sürücü kendi arabelleği ayırabilir ve sonra bu arabelleği iş öğesi olarak başlatmak için IoInitializeWorkItem'i çağırabilir.

IoAllocateWorkItem tarafından ayrılan tüm iş öğeleri IoFreeWorkItem tarafından serbest bırakılmalıdır. IoInitializeWorkItem tarafından başlatılan tüm bellekler, serbest hale getirilmeden önce IoUninitializeWorkItem tarafından başlatılmamalıdır.

İş öğeleri hakkında daha fazla bilgi için bkz. Sistem İş Parçacıkları.

Üst bilgi: Wdm.h. Dahil: Wdm.h, Ntddk.h, Ntifs.h.

KBUGCHECK_CALLBACK_RECORD

KBUGCHECK_CALLBACK_RECORD yapısı, KeRegisterBugCheckCallback ve KeDeregisterBugCheckCallback yordamlarının kullandığı opak bir yapıdır.

KBUGCHECK_CALLBACK_RECORD yapısı, muhasebe için KeRegisterBugCheckReasonCallback ve KeDeregisterBugCheckReasonCallback yordamları tarafından kullanılır.

Yapı, disk belleği olmayan havuz gibi yerleşik bellekte ayrılmalıdır. Yapıyı kullanmadan önce başlatmak için KeInitializeCallbackRecord yordamını kullanın.

Üst bilgi: Ntddk.h. Dahil Et: Ntddk.h.

KBUGCHECK_REASON_CALLBACK_RECORD

KBUGCHECK_REASON_CALLBACK_RECORD yapısı, KeRegisterBugCheckReasonCallback ve KeDeregisterBugCheckReasonCallback yordamlarının kullandığı opak bir yapıdır.

KBUGCHECK_REASON_CALLBACK_RECORD yapısı, muhasebe için KeRegisterBugCheckReasonCallback ve KeDeregisterBugCheckReasonCallback yordamları tarafından kullanılır.

Yapı, disk belleği olmayan havuz gibi yerleşik bellekte ayrılmalıdır. Yapıyı kullanmadan önce başlatmak için KeInitializeCallbackRecord yordamını kullanın.

Microsoft Windows XP Service Pack 1 (SP1), Windows Server 2003 ve Windows işletim sisteminin sonraki sürümlerinde kullanılabilir.

Üst bilgi: Ntddk.h. Dahil Et: Ntddk.h.

KDPC

KDPC yapısı, DPC nesnesini temsil eden opak bir yapıdır. Bu yapının üyelerini doğrudan ayarlamayın. Bkz . DPC Nesneleri ve DPC'ler.

Üst bilgi: Wdm.h. Ekle: Wdm.h, Ntddk.h, Ntifs.h.

KFLOATING_SAVE

KFLOATING_SAVE yapısı, KeSaveFloatingPointState yordamının kaydettiği kayan nokta durumunu açıklayan opak bir yapıdır.

Kayan nokta durumunu geri yüklemek için KeRestoreFloatingPointState kullanın.

Üst bilgi: Wdm.h. Dahil: Wdm.h, Ntddk.h, Ntifs.h.

KGUARDED_MUTEX

KGUARDED_MUTEX yapısı, korunan bir mutex'i temsil eden opak bir yapıdır.

KeInitializeGuardedMutex kullanarak KGUARDED_MUTEX yapısını korumalı bir mutex olarak başlatın.

Koruma altında olan mutex'ler, sayfasız havuzdan tahsis edilmelidir.

Korunan mutex'ler hakkında daha fazla bilgi için bkz. Fast Mutexes ve Guarded Mutexes.

Üst bilgi: Wdm.h. Dahil: Wdm.h, Ntddk.h, Ntifs.h.

KINTERRUPT

KINTERRUPT yapısı, sistemin kesintisini temsil eden opak bir yapıdır.

IoConnectInterruptEx, sürücü bir InterruptService veya InterruptMessageService yordamı kaydederken, kesme için KINTERRUPT yapısına yönelik bir işaretçi sağlar. Sürücü, kesme için kesme döndürme kilidini edinirken veya serbest bırakırken bu işaretçiyi kullanır. Sürücü, bir InterruptService yordamının kaydını kaldırırken de bu işaretçiyi kullanır.

Üst bilgi: Wdm.h. Dahil: Wdm.h, Ntddk.h, Ntifs.h.

KLOCK_QUEUE_HANDLE

KLOCK_QUEUE_HANDLE yapısı, kuyruğa alınmış döndürme kilidini açıklayan opak bir yapıdır. Sürücü KLOCK_QUEUE_HANDLE yapısını ayırır ve kuyrukta saklanan spin kilidini elde etmek için KeAcquireInStackQueuedSpinLock ve KeAcquireInStackQueuedSpinLockAtDpcLevel işlevine geçirir. Bu rutinler kuyruğa alınan döndürme kilidini temsil eden yapıyı başlatır. Sürücü, döndürme kilidini serbest bıraktığında yapısını KeReleaseInStackQueuedSpinLock ve KeReleaseInStackQueuedSpinLockFromDpcLevel'e geçirir.

Daha fazla bilgi için bkz. Kuyruğa Alınmış Spin Kilitleri.

Üst bilgi: Wdm.h. Dahil: Wdm.h, Ntddk.h, Ntifs.h.

KTIMER

KTIMER yapısı, zamanlayıcı nesnesini temsil eden opak bir yapıdır. Bu yapının üyelerini doğrudan ayarlamayın. Daha fazla bilgi için bkz . Zamanlayıcı Nesneleri ve DPC'ler.

Üst bilgi: Wdm.h. İçer: Wdm.h, Ntddk.h, Ntifs.h.

LOOKASIDE_LIST_EX

LOOKASIDE_LIST_EX yapısı bir lookaside listesini tanımlar.

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

Lookaside listesi, sürücünün sistem ayırma rutinlerine yönelik çağrı sayısını azaltmak için yerel olarak yönetebileceği sabit boyutta arabelleklerden oluşan bir havuzdur. Bu çağrıların azalması performansı artırır. Arabellekler tekdüzen boyuttadır ve lookaside listesinde girdi olarak depolanır.

Sürücüler LOOKASIDE_LIST_EX yapısını opak olarak ele almalıdır. Yapı üyelerine erişen veya bu üyelerin konumlarına bağımlılıkları olan sürücüler, taşınabilirliğini ve diğer sürücülerle birlikte çalışabilirliğini kaybedebilir.

İlgili makaleler bölümü, bu yapıyı kullanan yordamların listesini içerir.

Lookaside listeleri hakkında daha fazla bilgi için bkz. Lookaside Listelerini Kullanma.

64 bit platformlarda bu yapı 16 bayt hizalanmış olmalıdır.

Üst bilgi: Wdm.h. Dahil: Wdm.h, Ntddk.h, Ntifs.h.

NPAGED_LOOKASIDE_LIST

NPAGED_LOOKASIDE_LIST yapısı, sayfalanmamış havuzdan ayrılan sabit boyutlu arabelleklerin önbelleğe alma listesini açıklayan opak bir yapıdır. Sistem yeni girdiler oluşturur ve listedeki kullanılmayan girişleri gerektiği gibi yok eder. Sabit boyutlu arabellekler için, bir görünüm listesi kullanmak, belleği doğrudan ayırmaktan daha hızlıdır.

Görünüm listesini başlatmak için ExInitializeNPagedLookasideList kullanın. Bir arabellek ayırmak için ExAllocateFromNPagedLookasideList ve bir arabelleği listeye döndürmek için ExFreeToNPagedLookasideList kullanın.

Sürücüler, yüklemeyi kaldırmadan önce oluşturdukları tüm lookaside listelerini her zaman açıkça boşaltmalıdır. Aksini yapmak ciddi bir programlama hatasıdır. Listeyi serbest bırakmak için ExDeleteNPagedLookasideList kullanın.

Sürücüler, disk belleği havuzu için görünüm listelerini de kullanabilir. PAGED_LOOKASIDE_LIST yapısı, sayfalanmış arabellekler içeren bir ara bellek listesini açıklar. LOOKASIDE_LIST_EX yapısı, sayfalanmış veya sayfalanmamış tamponlar içerebilen bir ön tanımlı listeyi tanımlayabilir. Daha fazla bilgi için bkz. Lookaside Listelerini Kullanma.

64 bit platformlarda bu yapı 16 bayt hizalanmış olmalıdır.

Üst bilgi: Wdm.h. Dahil: Wdm.h, Ntddk.h, Ntifs.h.

OBJECT_TYPE

OBJECT_TYPE bir tanıtıcının nesne türünü belirten opak bir yapıdır. Daha fazla bilgi için bkz. ObReferenceObjectByHandle.

Üst bilgi: Wdm.h. Dahil: Wdm.h, Ntddk.h, Ntifs.h.

PAGED_LOOKASIDE_LIST

PAGED_LOOKASIDE_LIST yapısı, disk belleği havuzundan ayrılan sabit boyutlu arabelleklerin yer aldığı bir lookaside listesini tanımlayan opak bir yapıdır. Sistem yeni girdiler oluşturur ve listedeki kullanılmayan girişleri gerektiği gibi yok eder. Sabit boyutlu arabellekler için, bir lookaside listesi kullanmak, belleği doğrudan ayırmaktan daha hızlıdır.

Görünüm listesini başlatmak için ExInitializePagedLookasideList kullanın. Listeden bir arabellek ayırmak için ExAllocateFromPagedLookasideList kullanın ve listeye bir arabellek döndürmek için ExFreeToPagedLookasideList kullanın.

Sürücülerin yüklemesini kaldırmadan önce oluşturdukları tüm lookaside listelerini her zaman açıkça boşaltması gerekir. Aksini yapmak ciddi bir programlama hatasıdır. Listeyi serbest bırakmak için ExDeletePagedLookasideList kullanın.

Sürücüler, sayfalanmamış havuz için görünüm listelerini de kullanabilir. NPAGED_LOOKASIDE_LIST yapısı, sayfalanmamış arabellekler içeren bir lookaside listesini açıklar. LOOKASIDE_LIST_EX yapısı, sayfalanmış veya sayfalanmamış arabellekler içeren bir görünüm listesini açıklayabilir. Daha fazla bilgi için bkz. Lookaside Listelerini Kullanma.

64 bit platformlarda bu yapı 16 bayt hizalanmış olmalıdır.

Üst bilgi: Wdm.h. Dahil: Wdm.h, Ntddk.h, Ntifs.h.

RTL_BITMAP

RTL_BITMAP yapısı, bit eşlemi açıklayan opak bir yapıdır.

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

Bu yapının üyelerine doğrudan erişmeyin. Üye konumlarına bağımlılıkları olan veya üye değerlerine doğrudan erişen sürücüler, Windows işletim sisteminin gelecekteki sürümleriyle uyumlu olmayabilir.

RTL_BITMAP yapısı, rastgele uzunlukta genel amaçlı, tek boyutlu bir bit eşlem için üst bilgi görevi görür. Bir sürücü, yeniden kullanılabilir öğeler kümesini izlemek için ekonomik bir yol olarak böyle bir bit eşlem kullanabilir. Örneğin, bir dosya sistemi bit eşlemleri kullanarak sabit disk üzerindeki hangi kümelerin ve kesimlerin dosya verilerini tutmak için ayrılmış olduğunu izleyebilir.

RTL_BITMAP yapıları kullanan RtlXxx yordamlarının listesi için İlgili makaleler bölümüne bakın. Bu RtlXxx yordamlarının çağıranı, depolamayı RTL_BITMAP yapısına ve bit eşlemi içeren arabelleğe ayırmadan sorumludur. Bu arabellek bellekte 4 baytlık bir sınırda başlamalı ve uzunluğu 4 baytın katı olmalıdır. Bit eşlem arabelleğin başlangıcında başlar, ancak ayrılan arabelleğe sığan herhangi bir sayıda bit içerebilir.

RtlXxx yordamına parametre olarak bir RTL_BITMAP yapısı sağlamadan önce, yapıyı başlatmak için RtlInitializeBitMap yordamını çağırın. Bu yordamın giriş parametreleri, bit eşlemi içeren bir arabelleğe yönelik bir işaretçi ve bit eşleminin bit cinsinden boyutudur. RtlInitializeBitMap bu arabelleğin içeriğini değiştirmez.

Çağıran, sayfalı bellekte RTL_BITMAP yapısı ve bit eşlem için depolama alanı ayırırsa, bu yapıya bir işaretçi olarak İlgili makaleler bölümünde listelenen RtlXxx rutinlerinden herhangi birine parametre verdiğinde, IRQL = APC_LEVEL'de çalışıyor olması gerekir. Çağıran depolama alanını sayfalandırılmayan bellekten (veya buna eşdeğer olarak kilitli disk belleğinden) ayırırsa, çağıran RtlXxx yordamını çağırdığında herhangi bir IRQL'de çalışıyor olabilir.

Üst bilgi: Wdm.h. Dahil: Wdm.h, Ntddk.h, Ntifs.h.

RTL_RUN_ONCE

RTL_RUN_ONCE yapısı, tek seferlik başlatma bilgilerini depolayan opak bir yapıdır.

Sürücülerin, diğer RtlRunOnceXxx yordamlarına geçirmeden önce RtlRunOnceInitialize yordamını çağırarak bu yapıyı başlatmaları gerekir.

Üst bilgi: Ntddk.h. Dahil Et: Ntddk.h.

GÜVENLİK_KONU_BAĞLAMI

SECURITY_SUBJECT_CONTEXT yapısı, belirli bir işlemin gerçekleştiği güvenlik bağlamını temsil eden opak bir yapıdır. Sürücüler, güvenlik kararları almak için bu yapının herhangi bir üyesini değiştirmemeli veya doğrudan erişmeye çalışmamalıdır. Bunun yerine, yetkilendirmedeki güvenlik sorunlarını önlemek için bu opak yapıyı SeAccessCheck veya SePrivilegeCheck çağrılarına geçirin.

Üst bilgi: Wdm.h. Dahil: Wdm.h, Ntddk.h, Ntifs.h.

SLIST_HEADER

SLIST_HEADER yapısı, sıralı tek bağlantılı listenin üst bilgisi olarak hizmet veren opak bir yapıdır. Daha fazla bilgi için bkz. Tek Bağlantılı ve Çift Bağlantılı Listeler.

64 bit platformlarda SLIST_HEADER yapıların 16 bayt hizalanmış olması gerekir.

Üst bilgi: Wdm.h. Dahil: Wdm.h, Ntddk.h, Ntifs.h.

XSTATE_SAVE

XSTATE_SAVE yapısı, çekirdek modu sürücüsünün kaydettiği ve geri yüklediği genişletilmiş işlemci durumu bilgilerini açıklayan opak bir yapıdır.

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

Tüm üyeler donuk.

KeSaveExtendedProcessorState ve KeRestoreExtendedProcessorState yordamları bu yapıyı kullanır.

Üst bilgi: Wdm.h. Dahil: 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

KeDeregisterBugCheckCallback

KeDeregisterBugCheckReasonCallback

KeInsertQueueDpc

KeRegisterBugCheckCallback

KeRegisterBugCheckReasonCallback

KeReleaseGuardedMutexUnsafe

KeReleaseInStackQueuedSpinLock

KeReleaseInStackQueuedSpinLockFromDpcLevel

KeReleaseInterruptSpinLock

KeRestoreFloatingPointState

KeSaveFloatingPointState

KeSynchronizeExecution

LookasideListAllocateEx

LookasideListFreeEx

ObReferenceObjectByHandle

PsGetCurrentProcess

PsGetProcessCreateTimeQuadPart

PsInitialSystemProcess

PsIsSystemThread

Hata Denetimi Geri Çağırma Verilerini Okuma

RtlRunOnceBeginInitialize

RtlRunOnceComplete

RtlRunOnceExecuteOnce

RtlRunOnceInitialize

RunOnceInitialization

Batarya Tükenme Koruması

SeAccessCheck

SeAssignSecurity

SeAssignSecurityEx