Windows struktur buram kernel

Tabel berikut berisi struktur buram kernel Windows:

Struktur Buram Deskripsi
EPROCESS

Struktur EPROCESS adalah struktur buram yang berfungsi sebagai objek proses untuk suatu proses.

Beberapa rutinitas, seperti PsGetProcessCreateTimeQuadPart, menggunakan EPROCESS untuk mengidentifikasi proses yang akan dioperasikan. Driver dapat menggunakan rutinitas PsGetCurrentProcess untuk mendapatkan penunjuk ke objek proses untuk proses saat ini dan dapat menggunakan rutinitas ObReferenceObjectByHandle untuk mendapatkan penunjuk ke objek proses yang terkait dengan pegangan yang ditentukan. Variabel global PsInitialSystemProcess menunjuk ke objek proses untuk proses sistem.

Perhatikan bahwa objek proses adalah objek Object Manager. Driver harus menggunakan rutinitas Object Manager seperti ObReferenceObject dan ObDereferenceObject untuk mempertahankan jumlah referensi objek.

Header: Wdm.h. Termasuk: Wdm.h, Ntddk.h, Ntifs.h.

ETHREAD

Struktur ETHREAD adalah struktur buram yang berfungsi sebagai objek benang untuk sebuah utas.

Beberapa rutinitas, seperti PsIsSystemThread, menggunakan ETHREAD untuk mengidentifikasi utas untuk beroperasi. Driver dapat menggunakan rutinitas PsGetCurrentThread untuk mendapatkan penunjuk ke objek utas untuk utas saat ini dan dapat menggunakan rutinitas ObReferenceObjectByHandle untuk mendapatkan penunjuk ke objek utas yang terkait dengan pegangan yang ditentukan.

Perhatikan bahwa objek thread adalah objek Object Manager. Driver harus menggunakan rutinitas Object Manager seperti ObReferenceObject dan ObDereferenceObject untuk mempertahankan jumlah referensi objek.

Header: Wdm.h. Termasuk: Wdm.h, Ntddk.h, Ntifs.h.

EX_RUNDOWN_REF

Struktur EX_RUNDOWN_REF adalah struktur sistem buram yang berisi informasi tentang status perlindungan run-down untuk objek bersama yang terkait.

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

Rutinitas perlindungan run-down semuanya mengambil pointer ke struktur EX_RUNDOWN_REF sebagai parameter pertama mereka. Rutinitas ini tercantum di bagian bawah halaman ini.

Untuk informasi selengkapnya, lihat Perlindungan Run-Down.

Header: Wdm.h. Termasuk Wdm.h.

EX_TIMER

Struktur EX_TIMER adalah struktur buram yang digunakan oleh sistem operasi untuk mewakili objek timer EX_TIMER .

typedef struct _EX_TIMER *PEX_TIMER;

Semua anggota struktur ini buram bagi pengemudi.

Rutinitas ExXxxTimer berikut memerlukan penunjuk ke struktur EX_TIMER yang dialokasikan sistem sebagai parameter input:

objek timer berbasis EX_TIMER dibuat oleh sistem operasi. Untuk mendapatkan objek timer seperti itu, driver Anda memanggil rutinitas ExAllocateTimer . Ketika objek ini tidak lagi diperlukan, driver bertanggung jawab untuk menghapus objek dengan memanggil ExDeleteTimer.

Untuk informasi selengkapnya, lihat Rutinitas ExXxxTimer dan Objek EX_TIMER.

Header: Wdm.h. Termasuk: Wdm.h, Ntddk.h, Ntifs.h.

FAST_MUTEX

Struktur FAST_MUTEX adalah struktur data buram yang mewakili muteks cepat.

Struktur FAST_MUTEX diinisialisasi oleh rutinitas ExInitializeFastMutex .

Untuk informasi selengkapnya tentang mutex cepat, lihat Mutex Cepat dan Mutex yang Dijaga.

Header: Wdm.h. Termasuk: Wdm.h, Ntddk.h, Ntifs.h.

IO_CSQ

Struktur IO_CSQ adalah struktur buram yang digunakan untuk menentukan rutinitas antrian IRP cancel-safe pengemudi. Jangan mengatur anggota struktur ini secara langsung. Gunakan IoCsqInitialize atau IoCsqInitializeEx untuk menginisialisasi struktur ini.

Untuk gambaran umum tentang cara menggunakan antrean IRP yang aman dibatalkan, lihat Membatalkan Antrean IRP Brankas.

Tersedia di Microsoft Windows XP dan versi yang lebih baru dari sistem operasi Windows.

Header: Wdm.h. Termasuk: Wdm.h, Ntddk.h, Ntifs.h.

IO_CSQ_IRP_CONTEXT

Struktur IO_CSQ_IRP_CONTEXT adalah struktur data buram yang digunakan untuk menentukan konteks IRP untuk IRP dalam antrean IRP cancel-safe pengemudi. Ini digunakan sebagai kunci oleh rutinitas IoCsqInsertIrp, IoCsqInsertIrpEx, dan IoCsqRemoveIrp untuk mengidentifikasi IRPs tertentu dalam antrian.

Untuk gambaran umum tentang cara menggunakan antrean IRP yang aman dibatalkan, lihat Membatalkan Antrean IRP Brankas.

Tersedia di Microsoft Windows XP dan versi yang lebih baru dari sistem operasi Windows.

Header: Wdm.h. Termasuk: Wdm.h, Ntddk.h, Ntifs.h.

IO_WORKITEM

Struktur IO_WORKITEM adalah struktur buram yang menggambarkan item kerja untuk utas pekerja sistem.

Driver dapat mengalokasikan item kerja dengan memanggil IoAllocateWorkItem. Atau, driver dapat mengalokasikan buffer sendiri, dan kemudian memanggil IoInitializeWorkItem untuk menginisialisasi buffer itu sebagai item kerja.

Setiap item kerja yang dialokasikan oleh IoAllocateWorkItem harus dibebaskan oleh IoFreeWorkItem. Setiap memori yang diinisialisasi oleh IoInitializeWorkItem harus tidak diinisialisasi oleh IoUninitializeWorkItem sebelum dapat dibebaskan.

Untuk informasi selengkapnya tentang item kerja, lihat Thread Pekerja Sistem.

Header: Wdm.h. Termasuk: Wdm.h, Ntddk.h, Ntifs.h.

KBUGCHECK_CALLBACK_RECORD

Struktur KBUGCHECK_CALLBACK_RECORD adalah struktur buram yang digunakan oleh rutinitas KeRegisterBugCheckCallback dan KeDeregisterBugCheckCallback .

Struktur KBUGCHECK_CALLBACK_RECORD digunakan untuk pembukuan oleh rutinitas KeRegisterBugCheckReasonCallback dan KeDeregisterBugCheckReasonCallback .

Struktur harus dialokasikan dalam memori residen, seperti kolam nonpaged. Gunakan rutinitas KeInitializeCallbackRecord untuk menginisialisasi struktur sebelum menggunakannya.

Header: Ntddk.h. Termasuk: Ntddk.h.

KBUGCHECK_REASON_CALLBACK_RECORD

Struktur KBUGCHECK_REASON_CALLBACK_RECORD adalah struktur buram yang digunakan oleh rutinitas KeRegisterBugCheckReasonCallback dan KeDeregisterBugCheckReasonCallback .

Struktur KBUGCHECK_REASON_CALLBACK_RECORD digunakan untuk pembukuan oleh rutinitas KeRegisterBugCheckReasonCallback dan KeDeregisterBugCheckReasonCallback .

Struktur harus dialokasikan dalam memori residen, seperti kolam nonpaged. Gunakan rutinitas KeInitializeCallbackRecord untuk menginisialisasi struktur sebelum menggunakannya.

Tersedia di Microsoft Windows XP dengan Service Pack 1 (SP1), Windows Server 2003, dan versi yang lebih baru dari sistem operasi Windows.

Header: Ntddk.h. Termasuk: Ntddk.h.

KDPC

Struktur KDPC adalah struktur buram yang mewakili objek DPC. Jangan mengatur anggota struktur ini secara langsung. Lihat Objek dan DPC.

Header: Wdm.h. Termasuk: Wdm.h, Ntddk.h, Ntifs.h.

KFLOATING_SAVE

Struktur KFLOATING_SAVE adalah struktur buram yang menggambarkan keadaan floating-point yang disimpan rutin KeSaveFloatingPointState .

Gunakan KeRestoreFloatingPointState untuk memulihkan status floating-point.

Header: Wdm.h. Termasuk: Wdm.h, Ntddk.h, Ntifs.h.

KGUARDED_MUTEX

Struktur KGUARDED_MUTEX adalah struktur buram yang mewakili muteks yang dijaga.

Gunakan KeInitializeGuardedMutex untuk menginisialisasi struktur KGUARDED_MUTEX sebagai mutex yang dijaga.

Mutex yang dijaga harus dialokasikan dari kumpulan non-halaman.

Untuk informasi selengkapnya tentang mutex yang dijaga, lihat Mutex Cepat dan Mutex yang Dijaga.

Header: Wdm.h. Termasuk: Wdm.h, Ntddk.h, Ntifs.h.

KINTERRUPT

Struktur KINTERRUPT adalah struktur buram yang mewakili interupsi ke sistem.

IoConnectInterruptEx menyediakan penunjuk ke struktur KINTERRUPT untuk interupsi saat pengemudi mendaftarkan rutinitas InterruptService atau InterruptMessageService . Driver menggunakan penunjuk ini saat memperoleh atau melepaskan kunci putaran interupsi untuk interupsi. Driver juga menggunakan penunjuk ini saat membatalkan pendaftaran rutinitas InterruptService .

Header: Wdm.h. Termasuk: Wdm.h, Ntddk.h, Ntifs.h.

KLOCK_QUEUE_HANDLE

Struktur KLOCK_QUEUE_HANDLE adalah struktur buram yang menggambarkan kunci spin yang diantrikan. Driver mengalokasikan struktur KLOCK_QUEUE_HANDLE , dan meneruskannya ke KeAcquireInStackQueuedSpinLock dan KeAcquireInStackQueuedSpinLockAtDpcLevel untuk mendapatkan kunci spin yang mengantri. Rutinitas tersebut menginisialisasi struktur untuk mewakili kunci putar yang diantrikan. Driver melewati struktur ke KeReleaseInStackQueuedSpinLock dan KeReleaseInStackQueuedSpinLockFromDpcLevel saat melepaskan kunci spin.

Untuk informasi selengkapnya, lihat Kunci Spin Yang Mengantri.

Header: Wdm.h. Termasuk: Wdm.h, Ntddk.h, Ntifs.h.

KTIMER

Struktur KTIMER adalah struktur buram yang mewakili objek timer. Jangan mengatur anggota struktur ini secara langsung. Untuk informasi selengkapnya, lihat Objek Timer dan DPC.

Header: Wdm.h. Termasuk: Wdm.h, Ntddk.h, Ntifs.h.

LOOKASIDE_LIST_EX

Struktur LOOKASIDE_LIST_EX menggambarkan daftar lookaside.

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

Daftar lookaside adalah kumpulan buffer ukuran tetap yang dapat dikelola pengemudi secara lokal untuk mengurangi jumlah panggilan ke rutinitas alokasi sistem dan, dengan demikian, untuk meningkatkan kinerja. Buffer berukuran seragam dan disimpan sebagai entri dalam daftar lookaside.

Pengemudi harus memperlakukan struktur LOOKASIDE_LIST_EX sebagai buram. Driver yang mengakses anggota struktur atau yang memiliki dependensi pada lokasi anggota ini mungkin tidak tetap portabel dan dapat dioperasikan dengan driver lain.

Bagian Lihat Juga berikut berisi daftar rutinitas yang menggunakan struktur ini.

Untuk informasi selengkapnya tentang daftar lookaside, lihat Menggunakan Daftar Lookaside.

Pada platform 64-bit, struktur ini harus disejajarkan 16 byte.

Didukung dimulai dengan Windows Vista.

Header: Wdm.h. Termasuk: Wdm.h, Ntddk.h, Ntifs.h.

NPAGED_LOOKASIDE_LIST

Struktur NPAGED_LOOKASIDE_LIST adalah struktur buram yang menggambarkan daftar lookaside buffer ukuran tetap yang dialokasikan dari kolam nonpaged. Sistem membuat entri baru dan menghancurkan entri yang tidak digunakan dalam daftar seperlunya. Untuk buffer ukuran tetap, menggunakan daftar lookaside lebih cepat daripada mengalokasikan memori secara langsung.

Gunakan ExInitializeNPagedLookasideList untuk menginisialisasi daftar lookaside. Gunakan ExAllocateFromNPagedLookasideList untuk mengalokasikan buffer dari daftar, dan ExFreeToNPagedLookasideList untuk mengembalikan buffer ke daftar.

Driver harus selalu secara eksplisit membebaskan daftar lookaside yang mereka buat sebelum membongkar. Ini adalah kesalahan pemrograman yang serius untuk melakukan sebaliknya. Gunakan ExDeleteNPagedLookasideList untuk membebaskan daftar.

Driver juga dapat menggunakan daftar lookaside untuk kumpulan halaman. Dimulai dengan Windows tahun 2000, struktur PAGED_LOOKASIDE_LIST menggambarkan daftar lookaside yang berisi buffer paged. Dimulai dengan Windows Vista, struktur LOOKASIDE_LIST_EX dapat menggambarkan daftar lookaside yang berisi buffer paged atau nonpaged. Untuk informasi selengkapnya, lihat Menggunakan Daftar Lookaside.

Pada platform 64-bit, struktur ini harus disejajarkan 16 byte.

Didukung dimulai dengan Windows tahun 2000.

Header: Wdm.h. Termasuk: Wdm.h, Ntddk.h, Ntifs.h.

OBJECT_TYPE

OBJECT_TYPE adalah struktur buram yang menentukan jenis objek pegangan. Untuk informasi selengkapnya, lihat ObReferenceObjectByHandle.

Header: Wdm.h. Termasuk: Wdm.h, Ntddk.h, Ntifs.h.

PAGED_LOOKASIDE_LIST

Struktur PAGED_LOOKASIDE_LIST adalah struktur buram yang menggambarkan daftar lookaside buffer ukuran tetap yang dialokasikan dari kumpulan halaman. Sistem membuat entri baru dan menghancurkan entri yang tidak digunakan dalam daftar seperlunya. Untuk buffer ukuran tetap, menggunakan daftar lookaside lebih cepat daripada mengalokasikan memori secara langsung.

Gunakan ExInitializePagedLookasideList untuk menginisialisasi daftar lookaside. Gunakan ExAllocateFromPagedLookasideList untuk mengalokasikan buffer dari daftar, dan ExFreeToPagedLookasideList untuk mengembalikan buffer ke daftar.

Driver harus selalu secara eksplisit membebaskan daftar lookaside yang mereka buat sebelum membongkar. Ini adalah kesalahan pemrograman yang serius untuk melakukan sebaliknya. Gunakan ExDeletePagedLookasideList untuk membebaskan daftar.

Driver juga dapat menggunakan daftar lookaside untuk kumpulan nonpaged. Dimulai dengan Windows tahun 2000, struktur NPAGED_LOOKASIDE_LIST menggambarkan daftar lookaside yang berisi buffer nonpaged. Dimulai dengan Windows Vista, struktur LOOKASIDE_LIST_EX dapat menggambarkan daftar lookaside yang berisi buffer paged atau nonpaged. Untuk informasi selengkapnya, lihat Menggunakan Daftar Lookaside.

Pada platform 64-bit, struktur ini harus disejajarkan 16 byte.

Didukung dimulai dengan Windows tahun 2000.

Header: Wdm.h. Termasuk: Wdm.h, Ntddk.h, Ntifs.h.

RTL_BITMAP

Struktur RTL_BITMAP adalah struktur buram yang menggambarkan bitmap.

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

Jangan langsung mengakses anggota struktur ini. Driver yang memiliki dependensi pada lokasi anggota atau yang mengakses nilai anggota secara langsung mungkin tidak tetap kompatibel dengan versi sistem operasi Windows di masa mendatang.

Struktur RTL_BITMAP berfungsi sebagai header untuk tujuan umum, bitmap satu dimensi panjang sewenang-wenang. Seorang pengemudi dapat menggunakan bitmap seperti itu sebagai cara ekonomis untuk melacak satu set item yang dapat digunakan kembali. Misalnya, sistem file dapat menggunakan bitmap untuk melacak cluster dan sektor mana pada hard disk yang telah dialokasikan untuk menyimpan data file.

Untuk daftar rutinitas RtlXxx yang menggunakan struktur RTL_BITMAP, lihat bagian Lihat Juga berikut. Pemanggil rutinitas RtlXxx ini bertanggung jawab untuk mengalokasikan penyimpanan untuk struktur RTL_BITMAP dan untuk buffer yang berisi bitmap. Buffer ini harus dimulai pada batas empat byte dalam memori dan harus kelipatan empat byte panjangnya. Bitmap dimulai pada awal buffer tetapi dapat berisi sejumlah bit yang akan muat di buffer yang dialokasikan.

Sebelum memasok struktur RTL_BITMAP sebagai parameter ke rutinitas RtlXxx, hubungi rutinitas RtlInitializeBitMap untuk menginisialisasi struktur. Parameter input ke rutinitas ini adalah penunjuk ke buffer yang berisi bitmap, dan ukuran, dalam bit, bitmap. RtlInitializeBitMap tidak mengubah konten buffer ini.

Jika penelepon mengalokasikan penyimpanan untuk struktur RTL_BITMAP dan bitmap dalam memori halaman, penelepon harus berjalan di IRQL <= APC_LEVEL ketika meneruskan pointer ke struktur ini sebagai parameter ke salah satu rutinitas RtlXxx yang tercantum di bagian Lihat Juga. Jika penelepon mengalokasikan penyimpanan dari memori nonhalaman (atau, setara, dari memori halaman yang terkunci), penelepon dapat berjalan di IRQL mana pun ketika memanggil rutinitas RtlXxx.

Didukung pada Windows tahun 2000 dan versi Windows yang lebih baru.

Header: Wdm.h. Termasuk: Wdm.h, Ntddk.h, Ntifs.h.

RTL_RUN_ONCE

Struktur RTL_RUN_ONCE adalah struktur buram yang menyimpan informasi untuk inisialisasi satu kali.

Pengemudi harus menginisialisasi struktur ini dengan memanggil rutinitas RtlRunOnceInitialize sebelum meneruskannya ke rutinitas RtlRunOnceXxx lainnya.

Hanya tersedia di Windows Vista dan versi yang lebih baru dari sistem operasi Windows.

Header: Ntddk.h. Termasuk: Ntddk.h.

SECURITY_SUBJECT_CONTEXT

Struktur SECURITY_SUBJECT_CONTEXT adalah struktur buram yang mewakili konteks keamanan di mana operasi tertentu sedang berlangsung.

Header: Wdm.h. Termasuk: Wdm.h, Ntddk.h, Ntifs.h.

SLIST_HEADER

Struktur SLIST_HEADER adalah struktur buram yang berfungsi sebagai header untuk daftar terkait tunggal yang diurutkan. Untuk informasi selengkapnya, lihat Daftar Tertaut Ganda dan Ganda.

Pada platform 64-bit, struktur SLIST_HEADER harus disejajarkan 16 byte.

Header: Wdm.h. Termasuk: Wdm.h, Ntddk.h, Ntifs.h.

XSTATE_SAVE

Struktur XSTATE_SAVE adalah struktur buram yang menggambarkan informasi status prosesor yang diperluas yang disimpan dan dipulihkan oleh driver mode kernel.

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

Semua anggota buram.

Struktur ini digunakan oleh rutinitas KeSaveExtendedProcessorState dan KeRestoreExtendedProcessorState .

Didukung dalam versi Windows 7 dan yang lebih baru dari sistem operasi Windows.

Header: Wdm.h. Termasuk: Wdm.h, Ntddk.h, Ntifs.h.

ExAcquireFastMutex

ExAcquireFastMutexUnsafe

ExAllocateFromLookasideListEx

ExAllocateFromNPagedLookasideList

ExAllocateFromPagedLookasideList

ExAllocateTimer

ExDeletePagedLookasideList

ExFreeToPagedLookasideList

ExInitializePagedLookasideList

ExCancelTimer

ExDeleteLookasideListEx

Daftar ExDeleteNPagedLookaside

ExDeleteTimer

ExFlushLookasideListEx

ExFreeToLookasideListEx

Daftar ExFreeToNPagedLookaside

ExInitializeLookasideListEx

ExInitializeNPagedLookasideList

ExInitializeSListHead

Daftar ExInterlockedFlushS

ExInterlockedPopEntrySList

ExInterlockedPushEntrySList

Daftar ExQuerydepthS

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

Membaca Data Callback Pemeriksaan Bug

RtlRunOnceBeginInitialize

RtlRunOnceComplete

RtlRunOnceExecuteOnce

RtlRunOnceInitialize

RunOnceInitialization

Perlindungan Run-Down

SeAccessCheck

SeAssignSecurity

SeAssignSecurityEx