struktur DEVICE_CAPABILITIES (wdm.h)
Struktur DEVICE_CAPABILITIES menjelaskan kemampuan PnP dan daya perangkat. Struktur ini dikembalikan sebagai respons terhadap IRP IRP_MN_QUERY_CAPABILITIES .
Sintaks
typedef struct _DEVICE_CAPABILITIES {
USHORT Size;
USHORT Version;
ULONG DeviceD1 : 1;
ULONG DeviceD2 : 1;
ULONG LockSupported : 1;
ULONG EjectSupported : 1;
ULONG Removable : 1;
ULONG DockDevice : 1;
ULONG UniqueID : 1;
ULONG SilentInstall : 1;
ULONG RawDeviceOK : 1;
ULONG SurpriseRemovalOK : 1;
ULONG WakeFromD0 : 1;
ULONG WakeFromD1 : 1;
ULONG WakeFromD2 : 1;
ULONG WakeFromD3 : 1;
ULONG HardwareDisabled : 1;
ULONG NonDynamic : 1;
ULONG WarmEjectSupported : 1;
ULONG NoDisplayInUI : 1;
ULONG Reserved1 : 1;
ULONG WakeFromInterrupt : 1;
ULONG SecureDevice : 1;
ULONG ChildOfVgaEnabledBridge : 1;
ULONG DecodeIoOnBoot : 1;
ULONG Reserved : 9;
ULONG Address;
ULONG UINumber;
DEVICE_POWER_STATE DeviceState[POWER_SYSTEM_MAXIMUM];
SYSTEM_POWER_STATE SystemWake;
DEVICE_POWER_STATE DeviceWake;
ULONG D1Latency;
ULONG D2Latency;
ULONG D3Latency;
} DEVICE_CAPABILITIES, *PDEVICE_CAPABILITIES;
Anggota
Size
Menentukan ukuran struktur, dalam byte. Bidang ini diatur oleh komponen yang mengirim permintaan IRP_MN_QUERY_CAPABILITIES .
Version
Menentukan versi struktur, saat ini versi 1. Bidang ini diatur oleh komponen yang mengirim permintaan IRP_MN_QUERY_CAPABILITIES .
DeviceD1
Menentukan apakah perangkat keras perangkat mendukung status daya D1. Driver tidak boleh mengubah nilai ini.
DeviceD2
Menentukan apakah perangkat keras perangkat mendukung status daya D2. Driver tidak boleh mengubah nilai ini.
LockSupported
Menentukan apakah perangkat mendukung penguncian perangkat fisik yang mencegah ejeksi perangkat. Anggota ini berkaitan dengan mengeluarkan perangkat dari slotnya, daripada mengeluarkan sepotong media yang dapat dilepas dari perangkat.
EjectSupported
Menentukan apakah perangkat mendukung ejeksi perangkat yang dikontrol perangkat lunak saat sistem dalam status PowerSystemWorking . Anggota ini berkaitan dengan mengeluarkan perangkat dari slotnya, daripada mengeluarkan sepotong media yang dapat dilepas dari perangkat.
Removable
Menentukan apakah perangkat dapat dihapus secara dinamis dari induk langsungnya. Jika Dapat Dilepas diatur ke TRUE, perangkat bukan milik objek fisik yang sama dengan induknya.
Misalnya, jika Dapat Dilepas diatur ke TRUE untuk perangkat komposit USB di dalam printer multifungsi, perangkat komposit bukan milik objek fisik induk langsungnya, seperti hub USB di dalam PC notebook.
Dalam kebanyakan kasus, driver bus, bukan driver fungsi, harus menentukan nilai parameter perangkat yang dapat dilepas . Untuk perangkat USB, driver hub USB mengatur parameter Dapat Dilepas . Ini tidak boleh dimodifikasi oleh driver fungsi.
Jika Dapat Dilepas diatur ke TRUE, perangkat ditampilkan dalam program Cabut atau Keluarkan Perangkat Keras , kecuali SurpriseRemovalOK juga diatur ke TRUE.
DockDevice
Menentukan apakah perangkat adalah periferal docking.
UniqueID
Menentukan apakah ID instans perangkat unik di seluruh sistem. Bit ini jelas jika ID instans hanya unik dalam cakupan bus. Untuk informasi selengkapnya, lihat String Identifikasi Perangkat.
SilentInstall
Menentukan apakah Manajer Perangkat harus menekan semua kotak dialog penginstalan; kecuali kotak dialog yang diperlukan seperti "tidak ada driver kompatibel yang ditemukan."
RawDeviceOK
Menentukan apakah driver untuk bus yang mendasar dapat mendorong perangkat jika tidak ada driver fungsi (misalnya, perangkat SCSI dalam mode pass-through). Mode operasi ini disebut mode mentah.
SurpriseRemovalOK
Menentukan apakah pengandar fungsi untuk perangkat dapat menangani kasus di mana perangkat dihapus sebelum Windows dapat mengirim IRP_MN_QUERY_REMOVE_DEVICE ke dalamnya. Jika SurpriseRemovalOK diatur ke TRUE, perangkat dapat dihapus dengan aman dari induk langsungnya terlepas dari status drivernya.
Misalnya, mouse USB standar tidak mempertahankan status apa pun dalam perangkat kerasnya dan dengan demikian dapat dihapus dengan aman kapan saja. Namun, hard disk eksternal yang cache drivernya menulis dalam memori tidak dapat dihapus dengan aman tanpa terlebih dahulu membiarkan driver membersihkan cache-nya ke perangkat keras.
Driver untuk perangkat USB yang mendukung penghapusan kejutan harus mengatur ini ke TRUE hanya ketika IRP sedang diteruskan kembali ke tumpukan driver.
WakeFromD0
Menentukan apakah perangkat dapat merespons sinyal bangun eksternal saat berada dalam status D0. Driver tidak boleh mengubah nilai ini.
WakeFromD1
Menentukan apakah perangkat dapat merespons sinyal bangun eksternal saat dalam status D1. Driver tidak boleh mengubah nilai ini.
WakeFromD2
Menentukan apakah perangkat dapat merespons sinyal bangun eksternal saat berada dalam status D2. Driver tidak boleh mengubah nilai ini.
WakeFromD3
Menentukan apakah perangkat dapat merespons sinyal bangun eksternal saat berada dalam status D3. Driver tidak boleh mengubah nilai ini.
HardwareDisabled
Ketika diatur, bendera ini menentukan bahwa perangkat keras perangkat dinonaktifkan.
Driver bus induk perangkat atau driver filter bus menetapkan bendera ini ketika driver tersebut menentukan bahwa perangkat keras perangkat dinonaktifkan.
Manajer PnP mengirimkan satu IRP_MN_QUERY_CAPABILITIES IRP tepat setelah perangkat dijumlahkan dan mengirim yang lain setelah perangkat dimulai. Manajer PnP hanya memeriksa bit ini tepat setelah perangkat dijumlahkan. Setelah perangkat dimulai, bit ini diabaikan.
NonDynamic
Disiapkan untuk penggunaan masa mendatang.
WarmEjectSupported
Disiapkan untuk penggunaan masa mendatang.
NoDisplayInUI
Jangan tampilkan perangkat di antarmuka pengguna. Jika bit ini diatur, perangkat tidak pernah ditampilkan di antarmuka pengguna, bahkan jika perangkat ada tetapi gagal dimulai. Hanya pengemudi bus dan sopir filter bus terkait yang harus mengatur bit ini. (Lihat juga bendera PNP_DEVICE_DONT_DISPLAY_IN_UI dalam struktur PNP_DEVICE_STATE .)
Reserved1
Dicadangkan untuk penggunaan sistem.
WakeFromInterrupt
Menunjukkan apakah driver atau ACPI bertanggung jawab untuk menangani peristiwa bangun. Jika diatur, driver bertanggung jawab untuk menangani peristiwa bangun. ACPI mempersenjatai perangkat saat menerima IRP IRP_MN_WAIT_WAKE, tetapi tidak menghubungkan interupsi, menyelesaikan IRP untuk memberi tahu tumpukan perangkat tentang peristiwa bangun.
SecureDevice
Menunjukkan apakah perangkat adalah perangkat yang aman.
ChildOfVgaEnabledBridge
Untuk perangkat VGA, menunjukkan apakah jembatan induk memiliki set bit pendekodean VGA.
DecodeIoOnBoot
Menunjukkan apakah perangkat mengaktifkan dekode IO pada boot.
Reserved
Dicadangkan untuk penggunaan sistem.
Address
Menentukan alamat yang menunjukkan di mana perangkat berada di bus yang mendasar.
Interpretasi nomor ini khusus bus. Jika alamat tidak diketahui atau pengemudi bus tidak mendukung alamat, pengemudi bus meninggalkan anggota ini pada nilai default 0xFFFFFFFF.
Daftar berikut ini menjelaskan informasi penyimpanan driver bus tertentu di bidang Alamat untuk perangkat anak mereka:
Bus | Deskripsi |
---|---|
1394 | Tidak menyediakan alamat karena alamatnya volatil. Default ke 0xFFFFFFFF. |
EISA | Nomor Slot (0-F). |
IDE | Untuk perangkat IDE, alamat berisi ID target dan LUN. Untuk saluran IDE, alamatnya adalah nol atau satu (0 = saluran utama dan 1 = saluran sekunder). |
ISApnp | Tidak menyediakan alamat. Default ke 0xFFFFFFFF. |
Kartu PC (PCMCIA) | Nomor soket (biasanya 0x00 atau 0x40). |
PCI | Nomor perangkat dalam kata tinggi dan nomor fungsi dalam kata rendah. |
SCSI | ID target. |
USB | Nomor port. |
UINumber
Menentukan nomor yang terkait dengan perangkat yang dapat ditampilkan di antarmuka pengguna.
Angka ini biasanya merupakan nomor slot yang dirasakan pengguna, seperti angka yang dicetak di samping slot di papan, atau beberapa nomor lain yang membuat lokasi perangkat fisik lebih mudah bagi pengguna. Untuk bus tanpa konvensi seperti itu, atau ketika UINumber tidak diketahui, pengemudi bus meninggalkan anggota ini pada nilai default 0xFFFFFFFF.
DeviceState[POWER_SYSTEM_MAXIMUM]
Array nilai yang menunjukkan status daya perangkat yang paling didukung yang dapat dipertahankan perangkat untuk setiap status daya sistem. Elemen DeviceState[PowerSystemWorking] dari array sesuai dengan status sistem S0. Entri untuk PowerSystemUnspecified dicadangkan untuk penggunaan sistem.
Entri dalam array ini didasarkan pada kemampuan devnode induk. Sebagai aturan umum, driver tidak boleh mengubah nilai-nilai ini. Namun, jika perlu, driver dapat menurunkan nilai, misalnya, dari PowerDeviceD1 ke PowerDeviceD2.
Jika driver bus tidak dapat menentukan status daya perangkat yang sesuai untuk perangkat yang dijumlahkan root, driver bus mengatur DeviceState[PowerSystemWorking] ke PowerDeviceD0 dan semua entri lainnya ke PowerDeviceD3.
SystemWake
Menentukan status daya sistem yang paling tidak didukung dari mana perangkat dapat memberi sinyal peristiwa bangun. Nilai PowerSystemUnspecified menunjukkan bahwa perangkat tidak dapat membangunkan sistem.
Sopir bus bisa mendapatkan informasi ini dari devnode induknya.
Secara umum, driver tidak boleh mengubah nilai ini. Namun, jika perlu, driver dapat menaikkan status daya, misalnya, dari PowerSystemHibernate ke PowerSystemS1, untuk menunjukkan bahwa perangkatnya tidak dapat membangunkan sistem dari status hibernasi tetapi dapat dari keadaan tidur yang lebih tinggi.
DeviceWake
Menentukan status daya perangkat yang paling tidak didukung tempat perangkat dapat memberi sinyal peristiwa bangun. Nilai PowerDeviceUnspecified menunjukkan bahwa perangkat tidak dapat memberi sinyal peristiwa bangun.
D1Latency
Menentukan latensi perkiraan terburuk perangkat, dalam unit 100 mikrodetik, untuk mengembalikan perangkat ke status PowerDeviceD0 dari status PowerDeviceD1 . Atur ke nol jika perangkat tidak mendukung status D1.
D2Latency
Menentukan latensi perkiraan terburuk perangkat, dalam unit 100 mikrodetik, untuk mengembalikan perangkat ke status PowerDeviceD0 dari status PowerDeviceD2 . Atur ke nol jika perangkat tidak mendukung status D2.
D3Latency
Menentukan perkiraan latensi terburuk perangkat, dalam unit 100 mikrodetik, untuk mengembalikan perangkat ke status PowerDeviceD0 dari status PowerDeviceD3 . Atur ke nol jika perangkat tidak mendukung status D3.
Keterangan
Driver bus menetapkan nilai yang sesuai dalam struktur ini sebagai respons terhadap IRP_MN_QUERY_CAPABILITIES IRP. Driver filter bus, driver fungsi, dan driver filter dapat mengubah kemampuan yang ditetapkan oleh pengemudi bus.
Driver yang mengirim permintaan IRP_MN_QUERY_CAPABILITIES harus menginisialisasi anggota Ukuran, Versi, Alamat, dan UINumber dari struktur ini sebelum mengirim IRP.
Untuk informasi selengkapnya tentang menggunakan struktur DEVICE_CAPABILITIES untuk menjelaskan kemampuan daya perangkat, lihat Melaporkan Kemampuan Daya Perangkat.
Persyaratan
Persyaratan | Nilai |
---|---|
Header | wdm.h (termasuk Wdm.h, Ntddk.h, Ntifs.h) |
Lihat juga
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk