다음을 통해 공유


IOCTL_SCSI_MINIPORT_DSM IOCTL(storport.h)

DSM(데이터 집합 관리) 알림은 IOCTL_SCSI_MINIPORT_DSM 제어 코드 요청의 미니포트 드라이버로 전송됩니다. IOCTL_SCSI_MINIPORT_DSM 요청은 IOCTL_SCSI_MINIPORT 하위 IOCTL입니다. DSM 작업에 대한 응답으로 StorPort에서 생성한 이 IOCTL은 함수 형식이 SRB_FUNCTION_IO_CONTROL SRB(STORAGE_REQUEST_BLOCK )로 미니포트로 전송됩니다. 입력 및 출력 데이터는 SRB 데이터 블록에 포함됩니다.

참고 SCSI 포트 드라이버 및 SCSI 미니포트 드라이버 모델은 나중에 변경되거나 사용할 수 없습니다. 대신 Storport 드라이버Storport 미니포트 드라이버 모델을 사용하는 것이 좋습니다.
 

주 코드

IRP_MJ_DEVICE_CONTROL

입력 버퍼

SRB의 DataBuffer 멤버에 지정된 버퍼에는 SRB_IO_CONTROL 구조체와 DSM_NOTIFICATION_REQUEST_BLOCK 구조체가 포함되어야 합니다.

입력 버퍼 길이

DataTransferLength 는 버퍼의 크기(바이트)를 나타내며, 이는 포함된 MP_DEVICE_DATA_SET_RANGE 구조체에 대한 추가 스토리지와 함께 적어도 sizeof (SRB_IO_CONTROL) + sizeof( DSM_NOTIFICATION_REQUEST_BLOCK )여야 합니다.

출력 버퍼

업데이트된 SRB_IO_CONTROL 구조체가 SRB의 데이터 버퍼로 반환됩니다. SrbStatus에는 미니포트가 요청을 처리한 결과가 포함됩니다.

출력 버퍼 길이

SRB_IO_CONTROL 구조체의 길이입니다.

상태 블록

함수 요청의 결과 상태 SRB_IO_CONTROLSrbStatus 멤버에 설정됩니다. 다음은 DSM 디스크 IOCTL 상태 코드입니다.

SRB 상태 Description
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.
머리글 storport.h(Ntddscsi.h, Storport.h 포함)

추가 정보

IOCTL_SCSI_MINIPORT

SRB_IO_CONTROL

STORAGE_REQUEST_BLOCK