IOCTL_SCSI_MINIPORT_DSM IOCTL (scsi.h)

数据集管理 (DSM) 通知在 IOCTL_SCSI_MINIPORT_DSM 控制代码请求中传输到微型端口驱动程序。 IOCTL_SCSI_MINIPORT_DSM请求是IOCTL_SCSI_MINIPORT的子 IOCTL。 此 IOCTL 由 StorPort 为响应 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 指示缓冲区的大小(以字节为单位),该缓冲区 的大小必须至少 为 (SRB_IO_CONTROL) + size of (DSM_NOTIFICATION_REQUEST_BLOCK) ,并包含 MP_DEVICE_DATA_SET_RANGE 结构的额外存储。

输出缓冲区

更新 SRB_IO_CONTROL 结构将返回到 SRB 中的数据缓冲区。 SrbStatus 包含微型端口处理请求的结果。

输出缓冲区长度

SRB_IO_CONTROL结构的长度。

状态块

函数请求的结果状态在 SRB_IO_CONTROLSrbStatus 成员中设置。 下面是 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_BLOCKdataSetRanges 成员中。 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