Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Ketika opsi Simulasi Sumber Daya Rendah (disebut Simulasi sumber daya rendah acak di Windows 8.1) aktif, Pemverifikasi Driver dapat gagal secara acak dalam alokasi memori driver, seperti jika driver berjalan di komputer dengan memori yang tidak cukup. Ini menguji kemampuan driver untuk merespons dengan benar terhadap memori rendah dan kondisi sumber daya rendah lainnya.
Tes Simulasi Sumber Daya Rendah gagal memenuhi alokasi yang diminta oleh panggilan ke beberapa fungsi yang berbeda, termasuk ExAllocatePoolWithXXX, MmGetSystemAddressForMdlSafe, MmProbeAndLockPages, MmMapLockedPagesSpecifyCache, dan MmMapIoSpace.
Dimulai dengan Windows Vista, Tes Simulasi Sumber Daya Rendah juga menyuntikkan kesalahan ke IoAllocateIrp, IoAllocateMdl, IoAllocateWorkItem, IoAllocateErrorLogEntry, MmAllocateContiguousMemory, MmAllocateContiguousMemorySpecifyCache, MmAllocatePagesForMdl, dan MmAllocatePagesForMdlEx. Selain itu, dimulai dengan Windows Vista, ketika Simulasi Sumber Daya Rendah diaktifkan, panggilan ke KeWaitForMultipleObjects atau KeWaitForSingleObject dengan parameter Alertable diatur ke TRUE dapat mengembalikan STATUS_ALERTED saat berjalan dalam konteks proses non-privileged. Ini mensimulasikan kemungkinan pemberitahuan utas yang berasal dari utas lain dalam aplikasi yang tidak memiliki hak istimewa yang sama.
Pengujian Simulasi Sumber Daya Rendah juga menyuntikkan kesalahan ke dalam fungsi GDI berikut: EngAllocMem, EngAllocUserMem, EngCreateBitmap, EngCreateDeviceSurface, EngCreateDeviceBitmap, EngCreatePalette, EngCreateClip, EngCreatePath, EngCreateWnd, EngCreateDriverObj, BRUSHOBJ_pvAllocRbrush, dan CLIPOBJ_ppoGetPath.
Di Windows 7 dan versi yang lebih baru dari sistem operasi Windows, opsi Simulasi Sumber Daya Rendah mendukung memori yang dialokasikan dengan menggunakan API kernel berikut:
IoAllocateIrp dan rutinitas lain yang dapat mengalokasikan struktur data paket permintaan I/O (IRP)
RtlAnsiStringToUnicodeString dan rutinitas string pustaka run-time (RTL) lainnya
Dimulai dengan Windows 8.1, opsi Simulasi Sumber Daya Rendah juga gagal dalam memenuhi alokasi yang diminta oleh panggilan ke MmAllocateNodePagesForMdlEx. Selain itu, untuk beberapa fungsi, Driver Verifier sekarang mengisi memori yang dialokasikan dengan pola acak. Tetapi hanya dalam situasi di mana fungsi mengembalikan memori yang belum diinisialisasi. Fungsi-fungsi ini meliputi:
- MmAllocatePagesForMdlEx
- MmAllocateNodePagesForMdlEx
- MmAllocateContiguousMemory
- MmAllocateContiguousMemorySpecifyCache
- MmAllocateContiguousMemorySpecifyCacheNode
- MmAllocateContiguousNodeMemory
- MmAllocateNonCachedMemory
Pengaturan Kustom untuk Simulasi Sumber Daya Rendah
Pada Windows Vista dan versi Windows yang lebih baru, Anda bisa menentukan pengaturan kustom berikut.
Kemungkinan bahwa alokasi tertentu akan gagal. Defaultnya adalah 6%.
aplikasi terpengaruh. Pengaturan ini membatasi alokasi gagal yang disuntikkan ke aplikasi tertentu. Secara default, semua alokasi terpengaruh.
tag kumpulan terpengaruh. Pengaturan ini membatasi kesalahan yang disuntikkan pada alokasi dengan tag pool yang telah ditentukan. Secara default, semua alokasi terpengaruh.
Penundaan (dalam menit) sebelum alokasi gagal. Penundaan ini memungkinkan sistem untuk memulai dan mencapai kestabilan sebelum kesalahan disuntikkan. Defaultnya adalah delapan menit.
Pada sistem operasi sebelum Windows Vista, Anda tidak dapat menyesuaikan setelan ini. Sistem operasi menggunakan nilai default.
Simulasi Sumber Daya Rendah tanpa Reboot
Anda dapat mengaktifkan Simulasi Sumber Daya Rendah pada Windows 2000 dan versi Windows yang lebih baru tanpa memulai ulang komputer dengan menggunakan parameter /volatil. Pengaturan segera efektif, tetapi hilang jika Anda mematikan atau menghidupkan ulang komputer.
Anda juga dapat menyimpan pengaturan Simulasi Sumber Daya Terbatas di registri dengan menghilangkan parameter /volatile. Setelan ini hanya efektif ketika Anda memulai ulang komputer, tetapi tetap efektif hingga Anda mengubahnya.
Mengaktifkan Opsi Ini
Anda dapat mengaktifkan opsi Simulasi Sumber Daya Rendah untuk satu atau beberapa driver dengan menggunakan Driver Verifier Manager atau baris perintah Verifier.exe. Untuk detailnya, lihat Memilih Opsi Pemverifikasi Driver.
Pada baris perintah
Pada baris perintah, opsi Simulasi Sumber Daya Rendah diwakili oleh Bit 2 (0x4) . Untuk mengaktifkan Simulasi Sumber Daya Rendah, gunakan nilai bendera 0x4 atau tambahkan 0x4 ke nilai bendera. Contohnya:
verifier /flags 0x4 /driver MyDriver.sysOpsi akan aktif setelah boot berikutnya.
Pada Windows Vista dan versi Windows yang lebih baru, Anda dapat menggunakan parameter /faults atau nilai bendera 0x4 untuk mengaktifkan Simulasi Sumber Daya Rendah. Untuk mengubah pengaturan untuk Simulasi Sumber Daya Rendah, Anda harus menggunakan /faults. Contohnya:
verifier /faults /driver MyDriver.sysPada Windows 2000 dan versi Windows yang lebih baru, Anda juga dapat mengaktifkan dan menonaktifkan Simulasi Sumber Daya Rendah tanpa me-reboot komputer dengan menambahkan parameter /volatil ke perintah . Contohnya:
verifier /volatile /flags 0x4 /adddriver MyDriver.sysPengaturan ini segera efektif, tetapi hilang ketika Anda mematikan atau me-reboot komputer. Untuk detailnya, lihat Menggunakan Pengaturan Volatil.
Di Windows Vista, Anda dapat menggunakan parameter /faults untuk mewakili Simulasi Sumber Daya Rendah dengan parameter /volatile untuk mewakili pengaturan yang efektif tanpa memulai ulang. Perubahan pengaturan akan ditampilkan. Contohnya:
0> verifier /volatile /faults /adddriver MyDriver.sys New Low Resources Simulation options: - Use default fault injection probability. - Allocations using any pool tag can be failed. - Simulate low resources conditions in any application. The new settings are in effect until you restart this computer or change them again.Menggunakan Driver Verifier Manager
- Mulai Manajer Pemverifikasi Driver. Ketik Pemverifikasi di jendela Command Prompt.
- Pilih Buat pengaturan kustom (untuk pengembang kode), lalu klik Berikutnya.
- Pilih Pilih pengaturan individual dari daftar lengkap.
- Pilih Simulasi sumber daya rendah.
Menyesuaikan Pengaturan (Windows Vista dan yang lebih baru)
Dimulai dengan Windows Vista, Anda dapat mengubah pengaturan default untuk properti penundaan, probabilitas, aplikasi, dan tag kumpulan dari opsi Simulasi Sumber Daya Rendah. Anda dapat mengubah pengaturan ini dengan menggunakan Driver Verifier Manager atau baris perintah Verifier.exe. Untuk detailnya, lihat Memilih Opsi Pemverifikasi Driver.
Pada baris perintah, sintaks untuk pengaturan ini adalah sebagai berikut:
verifier [/volatile] /faults[Probabilitas|PoolTags|Applications|DelayMins][/driver|DriverList]
Catatan Parameter pengaturan kustom harus muncul dalam urutan yang ditampilkan. Jika Anda menghilangkan nilai, ketik tanda kutip untuk mengisi tempatnya.
Subparameter
/kesalahan
Mengaktifkan opsi Simulasi Sumber Daya Rendah di Pemverifikasi Driver. (Anda tidak dapat menggunakan /flags 0x4 dengan subparameter pengaturan kustom.)
Probabilitas
Menentukan kemungkinan bahwa Pemverifikasi Driver akan gagal dalam alokasi tertentu. Ketik angka (dalam format desimal atau heksadesimal) untuk menunjukkan jumlah kemungkinan dalam 10.000 bahwa Verifier Driver akan gagal alokasi. Nilai default, 600, berarti 600/10000, atau 6%.
PoolTags
Membatasi alokasi yang dapat gagal oleh Pemverifikasi Driver hanya pada alokasi dengan tag pool yang ditentukan. Anda dapat menggunakan karakter kartubebas (*) untuk mewakili beberapa tag kumpulan. Untuk mencantumkan beberapa tag kumpulan, pisahkan tag dengan spasi. Secara default, semua alokasi dapat gagal.
Aplikasi
Membatasi alokasi yang gagal dialokasikan oleh Pemverifikasi Driver untuk program yang ditentukan. Ketik nama file yang dapat dieksekusi. Untuk mencantumkan program, pisahkan nama program dengan spasi. Secara default, semua alokasi dapat gagal.
DelayMins
Menentukan jumlah menit setelah booting di mana Pemverifikasi Driver tidak sengaja gagal alokasi apa pun. Penundaan ini memungkinkan driver untuk memuat dan sistem stabil sebelum pengujian dimulai. Ketik angka (dalam format desimal atau heksadesimal). Nilai defaultnya adalah 8 (menit).
Misalnya, perintah berikut memungkinkan Simulasi Sumber Daya Rendah dengan probabilitas 10% (1000/10000) dan penundaan lima menit untuk tag kumpulan Tag1 dan Fred dan aplikasi Notepad.exe.
verifier /faults 1000 "Tag1 Fred" Notepad.exe 5
Perintah berikut mengaktifkan Simulasi Sumber Daya Rendah dengan nilai default, kecuali bahwa perintah ini memperluas penundaan menjadi 10 menit.
verifier /faults "" "" "" 0xa
Menggunakan Driver Verifier Manager
Mulai Manajer Pemverifikasi Driver. Ketik Pemverifikasi di jendela Command Prompt.
Pilih Buat pengaturan kustom (untuk pengembang kode), lalu klik Berikutnya.
Pilih Pilih pengaturan individual dari daftar lengkap.
Pilih Simulasi sumber daya rendah, lalu klik Berikutnya.
Ubah pengaturan untuk properti penundaan, probabilitas, aplikasi, dan tag kumpulan sesuai keinginan.
Menampilkan Hasil
Anda dapat memantau berapa kali Driver Verifier sengaja menyebabkan kegagalan dalam alokasi sumber daya dengan menampilkan penghitung global Driver Verifier Faults Injected. Penghitung ini menampilkan jumlah total alokasi sumber daya yang sengaja gagal dilakukan oleh Driver Verifier sejak boot ulang terakhir.
Anda dapat melihat penghitung ini dalam file log Driver Verifier (/log), di baris perintah (/query) atau di Driver Verifier Manager. Di Windows 2000, untuk melihat penghitung global, pilih tab Penghitung Global. Di versi Windows yang lebih baru, pilih tugas Tampilkan informasi tentang driver terverifikasi saat ini, lalu tekan Berikutnya dua kali. Untuk informasi selengkapnya, lihat Memantau Penghitung Global.
Anda juga dapat menampilkan jumlah alokasi yang sengaja gagal dan jumlah total alokasi (untuk menghitung probabilitas) dengan menggunakan ekstensi debugger !verifier. Contoh berikut menunjukkan sampel keluaran !verifier.
Dalam contoh ini, menyuntik kegagalan API acak dengan sumber daya rendah menunjukkan bahwa Simulasi Sumber Daya Rendah diaktifkan. Alokasi Sumber Daya yang Gagal secara Sengaja menunjukkan jumlah alokasi yang sengaja gagal dan Alokasi Kumpulan yang Dicoba mewakili jumlah total alokasi.
!verifier
Verify Level 5 ... enabled options are:
Special pool
Inject random low-resource API failures
Summary of All Verifier Statistics
RaiseIrqls 0x2c671f
AcquireSpinLocks 0xca1a02
Synch Executions 0x10a623
Trims 0x0
Pool Allocations Attempted 0x862e0e
Pool Allocations Succeeded 0x8626e3
Pool Allocations Succeeded SpecialPool 0x768060
Pool Allocations With NO TAG 0x0
Pool Allocations Failed 0x34f
Resource Allocations Failed Deliberately 0x3f5
Untuk menampilkan stack trace untuk alokasi yang terakhir gagal oleh Driver Verifier, gunakan !verifier 4 di debugger kernel.
Contoh berikut menunjukkan sampel output dari !verifier 4. Secara bawaan, !verifier 4 menampilkan pelacakan tumpukan dari empat alokasi yang terakhir gagal, tetapi Anda dapat menggunakan parameter Jumlah untuk meningkatkan jumlah pelacakan tumpukan yang ditampilkan. Misalnya, !verifier 0x80 menampilkan 128 alokasi yang terakhir gagal.
Dalam contoh ini, perhatikan bahwa Verifier telah mencegat dan mengganti panggilan driver ke ExAllocatePoolWithTag. Salah satu penyebab paling umum dari kerusakan driver terjadi ketika driver mencoba mengalokasikan memori dan kemudian menggunakan pointer dari fungsi yang mengalokasikan sebelum memverifikasi bahwa itu bukan NULL.
kd> !verifier 4
Resource fault injection history:
Tracker @ 8354A000 (# entries: 80, size: 80, depth: 8)
Entry @ 8354B258 (index 75)
Thread: C2638220
816760CB nt!VerifierExAllocatePoolWithTag+0x49
A4720443 win32k!bDeleteAllFlEntry+0x15d
A4720AB0 win32k!GreEnableEUDC+0x70
A47218FA win32k!CleanUpEUDC+0x37
A473998E win32k!GdiMultiUserFontCleanup+0x5
815AEACC nt!MiDereferenceSession+0x74
8146D3B4 nt!MmCleanProcessAddressSpace+0x112
815DF739 nt!PspExitThread+0x603
Entry @ 8354B230 (index 74)
Thread: 8436D770
816760CB nt!VerifierExAllocatePoolWithTag+0x49
A462141C win32k!Win32AllocPool+0x13
A4725F94 win32k!StubGdiAlloc+0x10
Pengalaman dengan pengujian Simulasi Sumber Daya Terbatas mengungkapkan bahwa sebagian besar crash driver disebabkan oleh alokasi yang gagal terakhir. Dalam contoh di atas, crash terjadi di jalur win32k!GreEnableEUDC. Periksa kode di lintasan alokasi untuk menemukan penyebab kegagalan.
Untuk informasi tentang !verifier, lihat dokumentasi Alat Debugging untuk Windows.
Untuk menampilkan pengaturan di registri di baris perintah, gunakan opsi /querysettings. Contohnya:
C:\>verifier /querysettings
Special pool: Disabled
Pool tracking: Disabled
Force IRQL checking: Disabled
I/O verification: Disabled
Enhanced I/O verification: Disabled
Deadlock detection: Disabled
DMA checking: Disabled
Security checks: Disabled
Force pending I/O requests: Disabled
Low resources simulation: Enabled
IRP Logging: Disabled
Miscellaneous checks: Disabled
Low Resources Simulation options:
- Fault injection probability: 1/10000.
- Fail only allocations using pool tags: Tag1 Tag2.
- Simulate low resources conditions only in applications: test1.exe test2.exe.
- Boot time delay: 2 minutes.
Verified drivers:
blah.sys