struktur HW_INITIALIZATION_DATA (storport.h)

Struktur HW_INITIALIZATION_DATA (Storport) berisi informasi khusus untuk setiap driver miniport dan perangkat keras yang dikelola driver miniport.

Sintaks

typedef struct _HW_INITIALIZATION_DATA {
  ULONG                       HwInitializationDataSize;
  INTERFACE_TYPE              AdapterInterfaceType;
  PHW_INITIALIZE              HwInitialize;
  PHW_STARTIO                 HwStartIo;
  PHW_INTERRUPT               HwInterrupt;
  PVOID                       HwFindAdapter;
  PHW_RESET_BUS               HwResetBus;
  PHW_DMA_STARTED             HwDmaStarted;
  PHW_ADAPTER_STATE           HwAdapterState;
  ULONG                       DeviceExtensionSize;
  ULONG                       SpecificLuExtensionSize;
  ULONG                       SrbExtensionSize;
  ULONG                       NumberOfAccessRanges;
  PVOID                       Reserved;
  UCHAR                       MapBuffers;
  BOOLEAN                     NeedPhysicalAddresses;
  BOOLEAN                     TaggedQueuing;
  BOOLEAN                     AutoRequestSense;
  BOOLEAN                     MultipleRequestPerLu;
  BOOLEAN                     ReceiveEvent;
  USHORT                      VendorIdLength;
  PVOID                       VendorId;
  union {
    USHORT ReservedUshort;
    USHORT PortVersionFlags;
  };
  USHORT                      DeviceIdLength;
  PVOID                       DeviceId;
  PHW_ADAPTER_CONTROL         HwAdapterControl;
  PHW_BUILDIO                 HwBuildIo;
  PHW_FREE_ADAPTER_RESOURCES  HwFreeAdapterResources;
  PHW_PROCESS_SERVICE_REQUEST HwProcessServiceRequest;
  PHW_COMPLETE_SERVICE_IRP    HwCompleteServiceIrp;
  PHW_INITIALIZE_TRACING      HwInitializeTracing;
  PHW_CLEANUP_TRACING         HwCleanupTracing;
  PHW_TRACING_ENABLED         HwTracingEnabled;
  ULONG                       FeatureSupport;
  ULONG                       SrbTypeFlags;
  ULONG                       AddressTypeFlags;
  ULONG                       Reserved1;
  PHW_UNIT_CONTROL            HwUnitControl;
} HW_INITIALIZATION_DATA, *PHW_INITIALIZATION_DATA;

Anggota

HwInitializationDataSize

Menentukan ukuran struktur ini dalam byte, seperti yang dikembalikan oleh sizeof(HW_INITIALIZATION_DATA). Akibatnya, anggota ini menunjukkan versi struktur ini yang digunakan oleh driver miniport. Rutinitas DriverEntry driver miniport harus menetapkan nilai anggota ini untuk driver port.

AdapterInterfaceType

Driver Storport tidak mendukung bus warisan. Oleh karena itu, sebagian besar jenis antarmuka adaptor yang digunakan dengan driver Port SCSI tidak valid untuk Storport. Secara khusus, Isa, Eisa, MicroChannel, dan TurboChannel tidak didukung. Selain itu, tidak seperti kasus PORT SCSI, driver miniport yang bekerja dengan driver Storport tidak diperlukan untuk menyediakan nilai untuk anggota VendorIdLength, VendorId, DeviceIdLength, dan DeviceId .

HwInitialize

Pointer ke rutinitas HwStorInitialize driver miniport, yang merupakan titik masuk yang diperlukan untuk semua driver miniport.

HwStartIo

Pointer ke rutinitas HwStorStartIo driver miniport, yang merupakan titik masuk yang diperlukan untuk semua driver miniport.

HwInterrupt

Pointer ke rutinitas HwStorInterrupt driver miniport, yang merupakan titik masuk yang diperlukan untuk semua driver miniport.

HwFindAdapter

Pointer ke rutinitas HwStorFindAdapter driver miniport, yang merupakan titik masuk yang diperlukan untuk semua driver miniport.

HwResetBus

Pointer ke rutinitas HwStorResetBus driver miniport, yang merupakan titik masuk yang diperlukan untuk semua driver miniport.

HwDmaStarted

Driver Storport tidak mendukung DMA mode subordinat. Oleh karena itu, anggota ini harus NULL.

HwAdapterState

Driver Storport tidak mendukung driver warisan. Oleh karena itu, anggota ini harus NULL.

DeviceExtensionSize

Menentukan ukuran, dalam byte, yang diperlukan oleh driver miniport untuk ekstensi perangkat per adaptornya. Driver miniport menggunakan ekstensi perangkatnya sebagai penyimpanan untuk informasi adaptor bus host (HBA) yang ditentukan pengemudi. Driver port khusus sistem operasi menginisialisasi setiap ekstensi perangkat satu kali, ketika pertama kali mengalokasikan ekstensi dan mengisinya dengan nol. Ini meneruskan pointer ke ekstensi perangkat khusus HBA di setiap panggilan ke driver miniport. Ukuran yang diberikan tidak termasuk penyimpanan miniport yang diminta driver per unit logis. Ukuran penyimpanan per unit logis ditentukan melalui bidang SpecificLuExtensionSize , yang dijelaskan nanti dalam topik ini.

Meskipun SCSIPort menginisialisasi ulang ekstensi perangkat setiap kali adaptor dihentikan dan dengan demikian panggilan berikutnya ke HwScsiFindAdapter menerima ekstensi perangkat zeroed-out, Storport tidak mengikuti model tersebut. Sebaliknya, Storport mengatur ulang ekstensi perangkat ke nol hanya ketika pertama kali dialokasikan, jadi hanya panggilan pertama ke HwStorFindAdapter untuk adaptor tertentu yang menerima ekstensi perangkat zeroed-out. Panggilan berikutnya ke HwStorFindAdapter dan fungsi miniport lainnya menerima ekstensi perangkat seperti yang terakhir dimodifikasi oleh miniport. Ini memungkinkan driver miniport untuk menjaga pengetahuan tentang status adaptor antara Plug and Play (PnP) berhenti dan menghidupkan ulang, mungkin memungkinkan driver miniport untuk mengoptimalkan prosedur inisialisasinya.

SpecificLuExtensionSize

Menentukan ukuran dalam byte yang diperlukan oleh driver miniport untuk penyimpanan per unit logisnya, jika ada. Driver miniport dapat menggunakan ekstensi LU-nya sebagai penyimpanan untuk informasi unit logis yang ditentukan pengemudi tentang periferal di bus. Driver Storport menginisialisasi setiap ekstensi LU yang dialokasikannya dengan nol. Biarkan anggota ini diatur ke nol jika driver miniport tidak mempertahankan informasi per LU yang memerlukan penyimpanan. Nilai ini didasarkan pada asumsi bahwa HBA dapat menerima alamat 32-bit, terlepas dari apa yang sebenarnya dapat didukung oleh pengontrol. Jika ruang tambahan diperlukan dalam ekstensi LUN atau SRB untuk menangani alamat 64-bit, maka penyesuaian yang sesuai harus dilakukan pada nilai ini sebelum menggunakannya dengan rutinitas seperti StorPortGetUncachedExtension.

SrbExtensionSize

Menentukan ukuran, dalam byte, yang diperlukan oleh driver miniport untuk penyimpanan per permintaannya, jika ada. Driver miniport dapat menggunakan ekstensi SRB sebagai penyimpanan untuk informasi khusus permintaan yang ditentukan driver, seperti data yang diperlukan untuk memproses permintaan tertentu. Driver Storport tidak menginisialisasi ekstensi SRB, tetapi mengatur pointer ke penyimpanan ini di setiap SRB yang dikirimnya ke driver miniport. Ekstensi SRB dapat diakses dengan aman oleh perangkat keras HBA. Karena driver miniport yang bekerja dengan driver Storport harus mendukung daftar sebar/kumpulkan, dan daftar sebar/kumpulkan per SRB biasanya dialokasikan dalam ekstensi SRB, anggota ini jarang nol. Biarkan anggota ini diatur ke nol jika driver miniport tidak mempertahankan informasi per-SRB yang memerlukan penyimpanan.

Nilai ini didasarkan pada asumsi bahwa HBA dapat menerima alamat 32-bit, terlepas dari apa yang sebenarnya dapat didukung oleh pengontrol. Jika ruang tambahan diperlukan dalam ekstensi LUN atau SRB untuk menangani alamat 64-bit, maka penyesuaian yang sesuai harus dilakukan pada nilai ini sebelum menggunakannya dengan rutinitas seperti StorPortGetUncachedExtension.

NumberOfAccessRanges

Menentukan berapa banyak rentang akses yang digunakan adaptor. Masing-masing adalah rentang alamat memori atau alamat port I/O.

Reserved

Disediakan untuk penggunaan sistem dan tidak tersedia untuk digunakan oleh driver miniport.

MapBuffers

Menunjukkan apakah driver Storport memetakan alamat buffer data SRB ke alamat virtual sistem. Anggota MapBuffers dapat memiliki salah satu nilai berikut.

Nilai Makna
STOR_MAP_NO_BUFFERS Jangan memetakan SRB apa pun kecuali SRB_FUNCTION_IO_CONTROL dan SRB_FUNCTION_WMI.
STOR_MAP_ALL_BUFFERS Kedaluwarsa. Nilai ini memiliki efek yang sama dengan STOR_MAP_NON_READ_WRITE_BUFFERS.
STOR_MAP_NON_READ_WRITE_BUFFERS Petakan buffer untuk semua I/O kecuali untuk permintaan baca atau tulis.
STOR_MAP_ALL_BUFFERS_INCLUDING_READ_WRITE Petakan buffer untuk semua I/O termasuk permintaan baca dan tulis. Nilai ini valid dimulai dengan Windows 8.

NeedPhysicalAddresses

Harus diatur ke TRUE. Nilai TRUE menunjukkan bahwa driver miniport harus menerjemahkan jenis alamat tertentu ke alamat fisik. Driver Miniport yang bekerja dengan driver Storport harus mendukung DMA master bus, sehingga mereka akan selalu diharuskan untuk melakukan terjemahan alamat.

TaggedQueuing

Harus diatur ke TRUE. Nilai TRUE menunjukkan bahwa driver miniport mendukung antrean bertag SCSI. Semua driver miniport yang bekerja dengan driver Storport harus mendukung antrean yang ditandai.

AutoRequestSense

Harus BENAR. Nilai TRUE menunjukkan bahwa HBA dapat melakukan operasi request-sense tanpa memerlukan permintaan eksplisit untuk melakukannya. Semua driver miniport yang bekerja dengan driver Storport harus mendukung SCSI Auto-Request Sense.

MultipleRequestPerLu

Harus diatur ke TRUE. Nilai TRUE menunjukkan bahwa driver miniport dapat mengantrekan beberapa permintaan per unit logis. Driver Miniport yang bekerja dengan driver Storport harus mendukung beberapa permintaan per unit logis.

ReceiveEvent

Driver Storport mengabaikan anggota ini.

VendorIdLength

Driver Storport mengabaikan anggota ini, karena driver miniport yang bekerja dengan driver Storport harus mendukung PnP.

VendorId

Driver Storport mengabaikan anggota ini, karena driver miniport yang bekerja dengan driver Storport harus mendukung PnP.

ReservedUshort

PortVersionFlags

Bendera untuk menunjukkan fitur yang didukung.

DeviceIdLength

Driver Storport mengabaikan anggota ini, karena driver miniport yang bekerja dengan driver Storport harus mendukung PnP.

DeviceId

Driver Storport mengabaikan anggota ini, karena driver miniport yang bekerja dengan driver Storport harus mendukung PnP.

HwAdapterControl

Arahkan ke rutinitas HwStorAdapterControl driver miniport. Ini adalah rutinitas yang diperlukan karena driver miniport yang bekerja dengan driver Storport memerlukan dukungan PnP.

HwBuildIo

Penunjuk ke rutinitas HwStorBuildIo opsional yang dipanggil driver port untuk melakukan pemrosesan yang tidak disinkronkan sebelum memanggil rutinitas HwStorStartIo driver miniport. Panggilan balik ini khusus untuk miniport fisik dan harus diatur ke NULL oleh miniport virtual.

HwFreeAdapterResources

Penunjuk ke rutinitas HwStorFreeAdapterResources driver miniport virtual, yang merupakan titik masuk yang diperlukan untuk semua driver miniport virtual. Panggilan balik ini khusus untuk miniport virtual dan diatur ke NULL untuk miniport fisik.

Panggilan balik ini ditambahkan dalam Windows 8. Miniport virtual untuk versi Windows sebelumnya harus menggunakan VIRTUAL_HW_INITIALIZATION_DATA alih-alih struktur ini.

HwProcessServiceRequest

Penunjuk ke rutinitas HwStorProcessServiceRequest driver miniport virtual. Panggilan balik ini khusus untuk miniport virtual dan diatur ke NULL untuk miniport fisik.

Panggilan balik ini ditambahkan dalam Windows 8. Miniport virtual untuk versi Windows sebelumnya harus menggunakan VIRTUAL_HW_INITIALIZATION_DATA alih-alih struktur ini.

HwCompleteServiceIrp

Penunjuk ke rutinitas HwStorCompleteServiceIrp driver miniport virtual. Panggilan balik ini khusus untuk miniport virtual dan diatur ke NULL untuk miniport fisik.

Panggilan balik ini ditambahkan dalam Windows 8. Miniport virtual untuk versi Windows sebelumnya harus menggunakan VIRTUAL_HW_INITIALIZATION_DATA alih-alih struktur ini.

HwInitializeTracing

Penunjuk ke rutinitas HwStorInitializeTracing driver miniport virtual. Panggilan balik ini khusus untuk miniport virtual dan diatur ke NULL untuk miniport fisik.

Panggilan balik ini ditambahkan dalam Windows 8. Miniport virtual untuk versi Windows sebelumnya harus menggunakan VIRTUAL_HW_INITIALIZATION_DATA alih-alih struktur ini.

HwCleanupTracing

Penunjuk ke rutinitas HwStorCleanupTracing driver miniport virtual. Panggilan balik ini khusus untuk miniport virtual dan diatur ke NULL untuk miniport fisik.

Panggilan balik ini ditambahkan dalam Windows 8. Miniport virtual untuk versi Windows sebelumnya harus menggunakan VIRTUAL_HW_INITIALIZATION_DATA alih-alih struktur ini.

HwTracingEnabled

Penunjuk ke rutinitas HwStorTracingEnabled opsional yang dipanggil driver port untuk memberi tahu miniport apakah pelacakan diaktifkan atau tidak.

FeatureSupport

Bendera yang menunjukkan fitur yang didukung oleh miniport. FeatureSupport diatur ke kombinasi nilai-nilai ini:

Nilai Makna
STOR_FEATURE_VIRTUAL_MINIPORT Ini adalah driver miniport virtual.
STOR_FEATURE_ATA_PASS_THROUGH Miniport mendukung pass through ATA.
STOR_FEATURE_FULL_PNP_DEVICE_CAPABILITIES Miniport menyediakan pengaturan lengkap dalam struktur STOR_DEVICE_CAPABILITIES_EX .
STOR_FEATURE_DUMP_POINTERS Miniport mendukung SRB penunjuk cadangan.
STOR_FEATURE_DEVICE_NAME_NO_SUFFIX Driver miniport tidak menginginkan akhiran "Perangkat tipe SCSI" sebagai bagian dari nama yang mudah diingat perangkat.
STOR_FEATURE_DUMP_RESUME_CAPABLE Kemampuan dump miniport berfungsi untuk dilanjutkan dari hibernasi.
STOR_FEATURE_DEVICE_DESCRIPTOR_FROM_ATA_INFO_VPD Driver Storport menginisialisasi STORAGE_DEVICE_DESCRIPTOR dari halaman VPD Informasi ATA alih-alih dari data INQUIRY.
STOR_FEATURE_SET_ADAPTER_INTERFACE_TYPE Driver Storport mengatur jenis antarmuka adapter.

SrbTypeFlags

Bendera yang menunjukkan jenis SRB yang didukung oleh miniport. SrbTypeFlags diatur ke 0 atau kombinasi nilai berikut:

Nilai Makna
SRB_TYPE_FLAG_SCSI_REQUEST_BLOCK Miniport menggunakan SRB standar.
SRB_TYPE_FLAG_STORAGE_REQUEST_BLOCK Miniport mendukung SRB yang diperluas.

AddressTypeFlags

Skema alamat yang didukung oleh miniport. Saat ini, satu-satunya skema alamat didukung dan miniport harus mengatur anggota ini ke ADDRESS_TYPE_FLAG_BTL8.

Nilai Makna
ADDRESS_TYPE_FLAG_BTL8 Alamat 8-bit Bus, Target, dan LUN (BTL).

Reserved1

Dicadangkan, atur ke 0.

HwUnitControl

Penunjuk rutinitas HwStorUnitControl driver miniport. Driver port memanggil rutinitas ini dengan permintaan kontrol untuk perangkat unit penyimpanan.

Keterangan

Setiap rutinitas DriverEntry Storport miniport harus memanggil StorPortInitialize setelah driver miniport pertama kali nol dan kemudian mengatur anggota HW_INITIALIZATION_DATA.

Persyaratan

Persyaratan Nilai
Header storport.h (termasuk Storport.h)