IOCTL_SCSI_MINIPORT_DSM IOCTL (scsi.h)
Data Set Management (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以降で使用できます。 |
Header | scsi.h (Ntddscsi.h、Storport.h を含む) |