儲存類別驅動程式的 GetDescriptor 常式
對於資料傳輸作業,儲存體類別驅動程式需要每個 HBA 的設定資訊,以驅動其裝置所連接的匯流排。 若要取得這項資訊,類別驅動程式會呼叫內部 GetDescriptor 常式,或在 StartDevice 常式中實作相同的功能。 (如需StartDevice的相關資訊,請參閱處理儲存體類別 Driver.) 中的 PnP 啟動
GetDescriptor常式會建置並設定查詢屬性要求, (IRP_MJ_DEVICE_CONTROL與埠驅動程式IOCTL_STORAGE_QUERY_PROPERTY) ,以擷取類別驅動程式在其裝置擴充功能中儲存的裝置和配接器描述元。 類別驅動程式也可以根據傳回的描述中繼資料,在裝置延伸模組中設定驅動程式寫入器決定的旗標。
類別驅動程式會檢查傳回STORAGE_DEVICE_DESCRIPTOR資料,以判斷 SCSI 查詢資料 (裝置功能或 SCSI 對等) ,例如 SCSI 裝置類型、裝置的媒體 (,如果任何 ) 是可移動式 (RemovableMedia) 、裝置是否支援多個未處理的命令 (CommandQueueing) ,以及各種識別碼字串。 類別驅動程式會檢查傳回 STORAGE_ADAPTER_DESCRIPTOR 資料,以判斷配接器功能,包括:
特定 HBA 可以在單一作業中傳輸的最大位元組數目, (MaximumTransferLength) 。
如果 HBA 可以傳輸非連續實體頁面所支援的緩衝資料 (,換句話說,如果它支援散佈/收集) ,則每個緩衝區可以管理的不連續實體頁面數目、每個傳輸作業 (MaximumPhysicalPages) 。
HBA 的傳輸對齊需求,讓類別驅動程式可以在其裝置物件中正確設定 AlignmentRequirement 欄位, (AlignmentMask) 。
傳送 IOCTL_SCSI_PASS_THROUGH 要求的應用程式也可能使用此欄位。
如需在裝置物件中設定 AlignmentRequirement 的詳細資訊,請參閱 初始化裝置物件。
HBA 是否支援 SCSI 標記的佇列和/或每個邏輯單元內部佇列, (CommandQueueing) 。
HBA 是否支援 (AcceleratedTransfer) 同步傳輸。
HBA 是否在內部快取資料 (CachesData) 。
類別驅動程式應該將此資訊儲存在 FDO 的裝置擴充功能中,使其分派常式可確保傳送至儲存體埠驅動程式的所有要求都符合基礎 HBA 的大小、實體中斷數目和對齊需求。 如需類別驅動程式分派常式的詳細資訊,請參閱 儲存體類別驅動程式的分派常式。 如需設定裝置擴充功能的詳細資訊,請參閱 設定存放裝置類別驅動程式的裝置擴充功能。