IOCTL_SCSI_MINIPORT_DSM IOCTL (scsi.h)
データ セット管理 (DSM) 通知は、IOCTL_SCSI_MINIPORT_DSM コントロール コード要求でミニポート ドライバーに転送されます。 IOCTL_SCSI_MINIPORT_DSM 要求は、IOCTL_SCSI_MINIPORTのサブ IOCTL です。 DSM アクションに応答して StorPort によって生成されたこの IOCTL は、SRB_FUNCTION_IO_CONTROLの関数型を持つ STORAGE_REQUEST_BLOCK (SRB) としてミニポートに送信されます。 入力データと出力データは、SRB データ ブロックに含まれています。
メジャー コード
入力バッファー
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_CONTROLの SrbStatus メンバーで設定されます。 DSM ディスク IOCTL 状態コードを次に示します。
SRB の状態 | 形容 |
---|---|
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 範囲は、MP_DEVICE_DATA_SET_RANGE 構造体の配列として DSM_NOTIFICATION_REQUEST_BLOCK のメンバー DataSetRanges に含まれています。 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 を含む) |