IOCTL_SCSI_MINIPORT_DSM IOCTL (storport.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 指示缓冲区的大小(以字节为单位),该缓冲区的大小必须至少 大小 (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 状态 描述
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 DataBufferSRB_IO_CONTROL 结构之后。

此 IOCTL 的 SRB_IO_CONTROL 结构在其 签名 成员中包含IOCTL_MINIPORT_SIGNATURE_DSM_NOTIFICATION,ControlCode 成员中包含 IOCTL_SCSI_MINIPORT_DSM

要求

要求 价值
最低支持的客户端 Windows 8.1。
标头 storport.h (包括 Ntddscsi.h、Storport.h)

另请参阅

IOCTL_SCSI_MINIPORT

SRB_IO_CONTROL

STORAGE_REQUEST_BLOCK