Ler em inglês

Compartilhar via


IOCTL_SCSI_MINIPORT_DSM IOCTL (scsi.h)

Uma notificação de DSM (Gerenciamento de Conjunto de Dados) é transferida para um driver de miniporto em uma solicitação de código de controle IOCTL_SCSI_MINIPORT_DSM. A solicitação IOCTL_SCSI_MINIPORT_DSM é um sub-IOCTL de IOCTL_SCSI_MINIPORT. Esse IOCTL gerado pelo StorPort em resposta a uma ação DSM e, em seguida, enviado para o miniporto como um SRB (STORAGE_REQUEST_BLOCK) com um tipo de função de SRB_FUNCTION_IO_CONTROL. Os dados de entrada e saída estão contidos no bloco de dados SRB.

Observação o driver de porta SCSI e os modelos de driver de miniporto SCSI podem estar alterados ou indisponíveis no futuro. Em vez disso, recomendamos usar o de driver do Storport e miniporto storport modelos de driver.
 

Código principal

IRP_MJ_DEVICE_CONTROL

Buffer de entrada

O buffer especificado no databuffer membro do SRB deve conter uma estrutura SRB_IO_CONTROL e uma estrutura DSM_NOTIFICATION_REQUEST_BLOCK.

Comprimento do buffer de entrada

DataTransferLength indica o tamanho, em bytes, do buffer, que deve ter pelo menos tamanhos de (SRB_IO_CONTROL) + tamanhos de(DSM_NOTIFICATION_REQUEST_BLOCK), com armazenamento adicional para as estruturas MP_DEVICE_DATA_SET_RANGE incluídas.

Buffer de saída

Uma estrutura de SRB_IO_CONTROL atualizada é retornada para o buffer de dados no SRB. O SrbStatus contém o resultado do processamento do miniporto da solicitação.

Comprimento do buffer de saída

O comprimento de uma estrutura SRB_IO_CONTROL.

Bloco de status

O status resultante da solicitação de função é definido no membro SrbStatus do SRB_IO_CONTROL. Veja a seguir os códigos de status IOCTL do disco DSM.

SRB Status Descrição
SRB_STATUS_SUCCESS A solicitação foi concluída com êxito.
SRB_STATUS_INVALID_REQUEST A solicitação contém um tamanho de buffer inválido

Observações

DSM_NOTIFICATION_REQUEST_BLOCK

Uma estrutura de DSM_NOTIFICATION_REQUEST_BLOCK segue imediatamente a estrutura de SRB_IO_CONTROL no buffer de dados do SRB. DSM_NOTIFICATION_REQUEST_BLOCK é definido em ntddscsi.h como o seguinte.

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

Os intervalos LBA são incluídos no dataSetRanges membro do DSM_NOTIFICATION_REQUEST_BLOCK como uma matriz de estruturas de MP_DEVICE_DATA_SET_RANGE. MP_DEVICE_DATA_SET_RANGE é definido em ntddscsi.h como o seguinte.

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

A estrutura de DSM_NOTIFICATION_REQUEST_BLOCK está localizada após a estrutura de SRB_IO_CONTROL no DataBuffer do SRB.

A estrutura de SRB_IO_CONTROL para este IOCTL contém IOCTL_MINIPORT_SIGNATURE_DSM_NOTIFICATION em seu membro de assinatura e IOCTL_SCSI_MINIPORT_DSM no membro do ControlCode.

Requisitos

Requisito Valor
de cliente com suporte mínimo Disponível a partir do Windows 8.1.
cabeçalho scsi.h (inclua Ntddscsi.h, Storport.h)

Consulte também

IOCTL_SCSI_MINIPORT

SRB_IO_CONTROL

STORAGE_REQUEST_BLOCK