HW_FIND_ADAPTER fungsi panggilan balik (storport.h)

Rutinitas HwStorFindAdapter menggunakan konfigurasi yang disediakan untuk menentukan apakah HBA tertentu didukung dan, jika ya, untuk mengembalikan informasi konfigurasi tentang adaptor tersebut.

Sintaks

HW_FIND_ADAPTER HwFindAdapter;

ULONG HwFindAdapter(
           PVOID DeviceExtension,
  [in]     PVOID HwContext,
  [in]     PVOID BusInformation,
  [in]     PCHAR ArgumentString,
  [in/out] PPORT_CONFIGURATION_INFORMATION ConfigInfo,
  [in]     PBOOLEAN Reserved3
)
{...}

Parameter

DeviceExtension

Menyediakan area penyimpanan per adaptor.

[in] HwContext

Atur ke NULL.

[in] BusInformation

Atur ke NULL.

[in] ArgumentString

Menyediakan string yang dihentikan NULL dengan informasi konteks tentang driver.

[in/out] ConfigInfo

Memasok struktur PORT_CONFIGURATION_INFORMATION yang diinisialisasi yang digunakan driver miniport selama inisialisasi.

[in] Reserved3

Dicadangkan untuk penggunaan sistem.

Mengembalikan nilai

HwStorFindAdapter harus mengembalikan salah satu nilai status berikut:

Menampilkan kode Deskripsi
SP_RETURN_FOUND Menunjukkan bahwa HBA yang didukung ditemukan dan bahwa informasi konfigurasi yang relevan dengan HBA berhasil ditentukan dan diatur dalam struktur PORT_CONFIGURATION_INFORMATION .
SP_RETURN_ERROR Menunjukkan bahwa HBA ditemukan tetapi ada kesalahan saat mendapatkan informasi konfigurasi. Jika memungkinkan, kesalahan seperti itu harus dicatat dengan StorPortLogError.
SP_RETURN_BAD_CONFIG Menunjukkan bahwa informasi konfigurasi yang disediakan tidak valid untuk adaptor.
SP_RETURN_NOT_FOUND Menunjukkan bahwa tidak ada HBA yang didukung yang ditemukan untuk informasi konfigurasi yang disediakan.

Keterangan

Karena driver Storport hanya mendukung perangkat Plug and Play (PnP), parameter HwContext dan BusInformation ke HwStorFindAdapter tidak disediakan ke driver miniport non-virtual.

HwStorFindAdapter harus mengatur bidang MaximumTransferLength dan NumberOfPhysicalBreaks dalam struktur ConfigInfo . Selain bidang ini, struktur PORT_CONFIGURATION_INFORMATION akan selalu sepenuhnya menentukan semua sumber daya adaptor yang diperlukan untuk memulai adaptor.

Nama HwStorFindAdapter hanyalah tempat penampung. Prototipe aktual dari rutinitas ini didefinisikan dalam Storport.h sebagai berikut:

typedef
ULONG
HW_FIND_ADAPTER (
  _In_ PVOID  DeviceExtension,
  _In_ PVOID  HwContext,
  _In_ PVOID  BusInformation,
  _In_z_ PCHAR  ArgumentString,
  _Inout_ PPORT_CONFIGURATION_INFORMATION  ConfigInfo,
  _In_ PBOOLEAN  Reserved3
  );

Dalam kebanyakan kasus, StorPort memanggil rutinitas HwStorFindAdapter di IRQL == PASSIVE_LEVEL tanpa memperoleh kunci putaran apa pun. Kasus pengecualian adalah ketika miniport tidak mendukung panggilan HwStorAdaptorControl dengan jenis kontrol ScsiRestartAdapter . Dalam situasi ini, StorPort akan menginisialisasi ulang adaptor dengan memanggil HwStorFindAdapter dan HwStorInitialize. Jika demikian, HwStorFindAdapter dipanggil di IRQL == DISPATCH_LEVEL. Selain itu, ketika dalam mode dump, HwStorFindAdapter dipanggil di IRQL == HIGH_LEVEL.

Contoh

Untuk menentukan fungsi panggilan balik HwStorFindAdapter , 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 HwStorFindAdapter yang bernama MyHwFindAdapter, gunakan jenis HW_FIND_ADAPTER seperti yang ditunjukkan dalam contoh kode ini:

HW_FIND_ADAPTER MyHwFindAdapter;

Kemudian, terapkan rutinitas panggilan balik Anda sebagai berikut:

_Use_decl_annotations_
ULONG
MyHwFindAdapter (
  _In_ PVOID  DeviceExtension,
  _In_ PVOID  HwContext,
  _In_ PVOID  BusInformation,
  _In_z_ PCHAR  ArgumentString,
  _Inout_ PPORT_CONFIGURATION_INFORMATION  ConfigInfo,
  _In_ PBOOLEAN  Reserved3
  );
  {
      ...
  }

Jenis fungsi HW_FIND_ADAPTER 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_FIND_ADAPTER 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

   
Target Platform Universal
Header storport.h (termasuk Storport.h)
IRQL PASSIVE_LEVEL (Lihat bagian Keterangan.)

Lihat juga

HwStorInitialize

PORT_CONFIGURATION_INFORMATION

StorPortInitialize

StorPortLogError