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) |
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk