Compartir a través de


IOCTL_SCSI_MINIPORT_DSM IOCTL (storport.h)

Una notificación de administración de conjuntos de datos (DSM) se transfiere a un controlador de minipuerto en una solicitud de código de control IOCTL_SCSI_MINIPORT_DSM . La solicitud de IOCTL_SCSI_MINIPORT_DSM es un sub-IOCTL de IOCTL_SCSI_MINIPORT. Este IOCTL generado por StorPort en respuesta a una acción DSM y, a continuación, se envía al miniporte como un STORAGE_REQUEST_BLOCK (SRB) con un tipo de función de SRB_FUNCTION_IO_CONTROL. Los datos de entrada y salida se encuentran en el bloque de datos SRB.

Nota Los modelos de controlador de puerto SCSI y controlador de minipuerto SCSI pueden modificarse o no estar disponibles en el futuro. En su lugar, se recomienda usar los modelos del controlador Storport y del controlador storport miniport .
 

Código principal

IRP_MJ_DEVICE_CONTROL

Búfer de entrada

El búfer especificado en el miembro DataBuffer de la SRB debe contener una estructura de SRB_IO_CONTROL y una estructura de DSM_NOTIFICATION_REQUEST_BLOCK .

Longitud del búfer de entrada

DataTransferLength indica el tamaño, en bytes, del búfer, que debe ser al menos sizeof (SRB_IO_CONTROL) + sizeof(DSM_NOTIFICATION_REQUEST_BLOCK), con almacenamiento adicional para las estructuras MP_DEVICE_DATA_SET_RANGE incluidas.

Búfer de salida

Se devuelve una estructura de SRB_IO_CONTROL actualizada al búfer de datos de la SRB. SrbStatus contiene el resultado del procesamiento del miniporte de la solicitud.

Longitud del búfer de salida

Longitud de una estructura de SRB_IO_CONTROL .

Bloque de estado

El estado resultante de la solicitud de función se establece en el miembro SrbStatus de SRB_IO_CONTROL. A continuación se muestran los códigos de estado IOCTL del disco DSM.

Estado de SRB Descripción
SRB_STATUS_SUCCESS La solicitud se completó correctamente.
SRB_STATUS_INVALID_REQUEST La solicitud contiene un tamaño de búfer no válido.

Comentarios

DSM_NOTIFICATION_REQUEST_BLOCK

Una estructura de DSM_NOTIFICATION_REQUEST_BLOCK sigue inmediatamente la estructura de SRB_IO_CONTROL en el búfer de datos de la SRB. DSM_NOTIFICATION_REQUEST_BLOCK se define en ntddscsi.h como se indica a continuación.

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

Los intervalos LBA se incluyen en el miembro de DataSetRanges de DSM_NOTIFICATION_REQUEST_BLOCK como una matriz de estructuras de MP_DEVICE_DATA_SET_RANGE . MP_DEVICE_DATA_SET_RANGE se define en ntddscsi.h como se indica a continuación.

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

La estructura DSM_NOTIFICATION_REQUEST_BLOCK se encuentra después de la estructura de SRB_IO_CONTROL en DataBuffer de la SRB.

La estructura SRB_IO_CONTROL de este IOCTL contiene IOCTL_MINIPORT_SIGNATURE_DSM_NOTIFICATION en su miembro Signature y IOCTL_SCSI_MINIPORT_DSM en el miembro ControlCode .

Requisitos

Requisito Value
Cliente mínimo compatible Windows 8.1.
Encabezado storport.h (include Ntddscsi.h, Storport.h)

Consulte también

IOCTL_SCSI_MINIPORT

SRB_IO_CONTROL

STORAGE_REQUEST_BLOCK