HW_ADAPTER_CONTROL fungsi panggilan balik (storport.h)
Rutinitas HwStorAdapterControl driver miniport dipanggil untuk melakukan operasi sinkron untuk mengontrol status atau perilaku adaptor, seperti menghentikan atau memulai ulang adaptor bus host (HBA) untuk manajemen daya.
Sintaks
HW_ADAPTER_CONTROL HwAdapterControl;
SCSI_ADAPTER_CONTROL_STATUS HwAdapterControl(
[in] PVOID DeviceExtension,
[in] SCSI_ADAPTER_CONTROL_TYPE ControlType,
[in] PVOID Parameters
)
{...}
Parameter
[in] DeviceExtension
Penunjuk ke area penyimpanan per HBA driver miniport.
[in] ControlType
Nilai SCSI_ADAPTER_CONTROL_TYPE yang menentukan operasi kontrol adaptor, di mana setiap jenis kontrol memulai tindakan oleh driver miniport. Lihat SCSI_ADAPTER_CONTROL_TYPE untuk detailnya.
[in] Parameters
Penunjuk ke struktur atau nilai yang berisi informasi yang terkait dengan ControlType, atau NULL jika jenis kontrol tidak menggunakan struktur. Semua struktur dialokasikan pemanggil. Lihat SCSI_ADAPTER_CONTROL_TYPE untuk detailnya.
Nilai kembali
Bergantung pada jenis kontrol, HwStorAdapterControl mengembalikan salah satu nilai SCSI_ADAPTER_CONTROL_STATUS berikut:
Menampilkan kode | Deskripsi |
---|---|
ScsiAdapterControlSuccess | Driver miniport berhasil menyelesaikan operasi yang diminta. Saat ini, HwStorAdapterControl harus mengembalikan nilai ini untuk semua jenis kontrol. |
ScsiAdapterControlUnsuccessful | Operasi kontrol adapter tidak berhasil. |
Keterangan
HwStorAdapterControl adalah fungsi yang diperlukan.
Storport memanggil HwStorAdapterControl miniport dengan jenis kontrol ScsiQuerySupportedControlTypes setelah HBA diinisialisasi tetapi sebelum I/O pertama. Driver miniport mengisi struktur SCSI_SUPPORTED_CONTROL_TYPE_LIST di Parameter dengan operasi yang didukungnya. Setelah HwStorAdapterControl kembali dari panggilan ini, driver Storport memanggil panggilan balik HwStorAdapterControl driver miniport hanya untuk operasi yang didukung oleh miniport.
Karena driver miniport yang bekerja dengan driver Storport harus mendukung Plug and Play (PnP), miniport harus mendukung jenis kontrol ScsiStopAdapter dan ScsiRestartAdapter.
Tabel berikut mencantumkan IRQL saat ini dan spinlock yang diperoleh saat jenis kontrol dikeluarkan.
Control Type | IRQL | Kunci putar |
---|---|---|
ScsiQuerySupportedControlTypes | PASSIVE_LEVEL | Tidak ada |
ScsiStopAdapter | DIRQL | InterruptLock |
ScsiRestartAdapter | DIRQL | InterruptLock |
ScsiSetBootConfig | PASSIVE_LEVEL | Tidak ada |
ScsiSetRunningConfig | PASSIVE_LEVEL | Tidak ada |
ScsiPowerSettingNotification | PASSIVE_LEVEL | Tidak ada |
ScsiAdapterPower | <= DISPATCH_LEVEL | Tidak ada |
ScsiAdapterPoFxPowerRequired | <= DISPATCH_LEVEL | Tidak ada |
ScsiAdapterPoFxPowerActive | <= DISPATCH_LEVEL | Tidak ada |
ScsiAdapterPoFxPowerSetFState | <= DISPATCH_LEVEL | Tidak ada |
ScsiAdapterPoFxPowerControl | <= DISPATCH_LEVEL | Tidak ada |
ScsiAdapterPrepareForBusReScan | PASSIVE_LEVEL | Tidak ada |
ScsiAdapterSystemPowerHints | PASSIVE_LEVEL | Tidak ada |
ScsiAdapterFilterResourceRequirements | < DISPATCH_LEVEL | Tidak ada |
ScsiAdapterPoFxMaxOperationalPower | PASSIVE_LEVEL | Tidak ada |
ScsiAdapterPoFxSetPerfState | <= DISPATCH_LEVEL | Tidak ada |
ScsiAdapterSurpriseRemoval | < DISPATCH_LEVEL | Tidak ada |
ScsiAdapterSerialNumber | < DISPATCH_LEVEL | Tidak ada |
ScsiAdapterCryptoperation | PASSIVE_LEVEL | Tidak ada |
ScsiAdapterQueryFruId | PASSIVE_LEVEL | Tidak ada |
ScsiAdapterSetEventLogging | PASSIVE_LEVEL | Tidak ada |
Nama HwStorAdapterControl hanyalah tempat penampung. Prototipe aktual dari rutinitas ini didefinisikan dalam storport.h sebagai berikut:
typedef
SCSI_ADAPTER_CONTROL_STATUS
HW_ADAPTER_CONTROL (
_In_ PVOID DeviceExtension,
_In_ SCSI_ADAPTER_CONTROL_TYPE ControlType,
_In_ PVOID Parameters
);
Contoh
Untuk menentukan fungsi panggilan balik HwStorAdapterControl , Anda harus terlebih dahulu memberikan deklarasi fungsi yang mengidentifikasi jenis fungsi panggilan balik yang Anda tentukan. Windows menyediakan sekumpulan tipe fungsi panggilan balik untuk driver. Mendeklarasikan fungsi menggunakan jenis fungsi panggilan balik membantu Analisis Kode untuk Driver, Pemverifikasi Driver Statis (SDV), dan alat verifikasi lainnya menemukan kesalahan, dan itu adalah persyaratan untuk menulis driver untuk sistem operasi Windows.
Misalnya, untuk menentukan rutinitas panggilan balik HwStorAdapterControl yang bernama MyHwAdapterControl, gunakan jenis HW_ADAPTER_CONTROL seperti yang ditunjukkan dalam contoh kode ini:
HW_ADAPTER_CONTROL MyHwAdapterControl;
Kemudian, terapkan rutinitas panggilan balik Anda sebagai berikut:
_Use_decl_annotations_
SCSI_ADAPTER_CONTROL_STATUS
MyHwAdapterControl (
_In_ PVOID DeviceExtension,
_In_ SCSI_ADAPTER_CONTROL_TYPE ControlType,
_In_ PVOID Parameters
);
{
...
}
Jenis fungsi HW_ADAPTER_CONTROL didefinisikan dalam file header Storport.h . Untuk mengidentifikasi kesalahan secara lebih akurat saat Anda menjalankan alat analisis kode, pastikan untuk menambahkan anotasi Use_decl_annotations ke definisi fungsi Anda. Anotasi Use_decl_annotations memastikan bahwa anotasi yang diterapkan ke jenis fungsi HW_ADAPTER_CONTROL dalam file header digunakan. Untuk informasi selengkapnya tentang persyaratan untuk deklarasi fungsi, lihat Mendeklarasikan Fungsi Menggunakan Jenis Peran Fungsi untuk Driver Storport. Untuk informasi tentang Use_decl_annotations, lihat Perilaku Fungsi Anotasi.
Persyaratan
Persyaratan | Nilai |
---|---|
Klien minimum yang didukung | Windows 8 |
Target Platform | Universal |
Header | storport.h (termasuk Storport.h) |
IRQL | Lihat Keterangan. |