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.

Lihat juga

HwStorFindAdapter

HwStorInitialize

HwStorUnitControl

SCSI_ADAPTER_CONTROL_TYPE

SCSI_SUPPORTED_CONTROL_TYPE_LIST