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

IRP_MN_QUERY_CAPABILITIES

PNP_DEVICE_STATE