共用方式為


IOCTL_SCSI_MINIPORT_DSM IOCTL (scsi.h)

數據集管理 (DSM) 通知會傳送至 IOCTL_SCSI_MINIPORT_DSM 控制程式代碼要求中的迷你埠驅動程式。 IOCTL_SCSI_MINIPORT_DSM要求是IOCTL_SCSI_MINIPORT的子 IOCTL。 StorPort 所產生的這個 IOCTL 會回應 DSM 動作,然後以 STORAGE_REQUEST_BLOCK ( SRB) 的形式傳送至迷你埠,其函式類型為 SRB_FUNCTION_IO_CONTROL。 輸入和輸出數據包含在 SRB 數據區塊中。

注意 SCSI 埠驅動程式和 SCSI 迷你埠驅動程式模型未來可能會改變或無法使用。 相反地,我們建議使用 Storport 驅動程式Storport 迷你埠 驅動程式模型。
 

主要程序代碼

IRP_MJ_DEVICE_CONTROL

輸入緩衝區

SRB 之 DataBuffer 成員中指定的緩衝區必須包含 SRB_IO_CONTROL 結構和 DSM_NOTIFICATION_REQUEST_BLOCK 結構。

輸入緩衝區長度

DataTransferLength 表示緩衝區的大小,以位元組為單位,緩衝區的大小必須至少為 sizeof (SRB_IO_CONTROL) + sizeof (DSM_NOTIFICATION_REQUEST_BLOCK) ,並包含 MP_DEVICE_DATA_SET_RANGE結構的額外 記憶體。

輸出緩衝區

更新 SRB_IO_CONTROL 結構會傳回 SRB 中的數據緩衝區。 SrbStatus 包含迷你埠處理要求的結果。

輸出緩衝區長度

SRB_IO_CONTROL 結構的長度。

狀態區塊

函式要求的結果狀態是在 SRB_IO_CONTROLSrbStatus 成員中設定。 以下是 DSM 磁碟 IOCTL 狀態代碼。

SRB 狀態 Description
SRB_STATUS_SUCCESS 要求已順利完成。
SRB_STATUS_INVALID_REQUEST 要求包含無效的緩衝區大小

備註

DSM_NOTIFICATION_REQUEST_BLOCK

DSM_NOTIFICATION_REQUEST_BLOCK 結構會緊接在 SRB 的數據緩衝區中SRB_IO_CONTROL結構。 DSM_NOTIFICATION_REQUEST_BLOCK 定義於 ntddscsi.h 中,如下所示。

typedef struct _DSM_NOTIFICATION_REQUEST_BLOCK {
    ULONG   Version;
    ULONG   Size;
    ULONG   NotifyFLags;
    ULONG   DataSetProfile;
    ULONG   Reserved[3];
    ULONG   DataSetRangesCount;
    MP_DEVICE_DATA_SET_RANGE DataSetRanges[ANYSIZE_ARRAY];
} DSM_NOTIFICATION_REQUEST_BLOCK, *PDSM_NOTIFICATION_REQUEST_BLOCK;

MP_DEVICE_DATA_SET_RANGE

LBA 範圍包含在 DataSetRanges 成員中 ,DSM_NOTIFICATION_REQUEST_BLOCK 做為 MP_DEVICE_DATA_SET_RANGE 結構的陣列。 MP_DEVICE_DATA_SET_RANGE 定義於 ntddscsi.h 中,如下所示。

typedef struct _MP_DEVICE_DATA_SET_RANGE {
    LONGLONG    StartingOffset;
    ULONGLONG   LengthInBytes;
} MP_DEVICE_DATA_SET_RANGE, *PMP_DEVICE_DATA_SET_RANGE;

DSM_NOTIFICATION_REQUEST_BLOCK 結構位於 SRB DataBuffer 中的SRB_IO_CONTROL結構之後。

這個 IOCTL 的SRB_IO_CONTROL結構在其 Signature 成員中包含IOCTL_MINIPORT_SIGNATURE_DSM_NOTIFICATION,以及 ControlCode 成員中的IOCTL_SCSI_MINIPORT_DSM

規格需求

需求
最低支援的用戶端 從 Windows 8.1 開始提供。
標頭 scsi.h (包含 Ntddscsi.h、Storport.h)

另請參閱

IOCTL_SCSI_MINIPORT

SRB_IO_CONTROL

STORAGE_REQUEST_BLOCK