Share via


IOCTL_SCSI_MINIPORT_DSM IOCTL (scsi.h)

Eine DSM-Benachrichtigung (Data Set Management) wird in einer IOCTL_SCSI_MINIPORT_DSM-Steuerelementcodeanforderung an einen Miniporttreiber übertragen. Die IOCTL_SCSI_MINIPORT_DSM-Anforderung ist eine Unter-IOCTL von IOCTL_SCSI_MINIPORT. Diese von StorPort als Reaktion auf eine DSM-Aktion generierte IOCTL wird dann als STORAGE_REQUEST_BLOCK (SRB) mit einem Funktionstyp SRB_FUNCTION_IO_CONTROL an den Miniport gesendet. Die Eingabe- und Ausgabedaten sind im SRB-Datenblock enthalten.

Hinweis Der SCSI-Porttreiber und die SCSI-Miniporttreibermodelle können in Zukunft geändert oder nicht mehr verfügbar sein. Stattdessen wird empfohlen, die Modelle Storport-Treiber und Storport-Miniporttreiber zu verwenden.
 

Hauptcode

IRP_MJ_DEVICE_CONTROL

Eingabepuffer

Der im DataBuffer-Member des SRB angegebene Puffer muss eine SRB_IO_CONTROL-Struktur und eine DSM_NOTIFICATION_REQUEST_BLOCK-Struktur enthalten.

Eingabepufferlänge

DataTransferLength gibt die Größe des Puffers in Bytes an, die mindestens sizeof (SRB_IO_CONTROL) + sizeof(DSM_NOTIFICATION_REQUEST_BLOCK) sein muss, wobei zusätzlicher Speicher für die MP_DEVICE_DATA_SET_RANGE-Strukturen enthalten ist.

Ausgabepuffer

Eine aktualisierte SRB_IO_CONTROL Struktur wird an den Datenpuffer im SRB zurückgegeben. Der SrbStatus enthält das Ergebnis der Verarbeitung der Anforderung durch den Miniport.

Länge des Ausgabepuffers

Die Länge einer SRB_IO_CONTROL-Struktur .

Statusblock

Die resultierende status der Funktionsanforderung wird im SrbStatus-Member von SRB_IO_CONTROL festgelegt. Im Folgenden finden Sie die IOCTL-Codes des DSM-Datenträgers status.

SRB-Status BESCHREIBUNG
SRB_STATUS_SUCCESS Die Anforderung wurde erfolgreich abgeschlossen.
SRB_STATUS_INVALID_REQUEST Die Anforderung enthält eine ungültige Puffergröße.

Hinweise

DSM_NOTIFICATION_REQUEST_BLOCK

Eine DSM_NOTIFICATION_REQUEST_BLOCK-Struktur folgt unmittelbar der SRB_IO_CONTROL-Struktur im Datenpuffer des SRB. DSM_NOTIFICATION_REQUEST_BLOCK wird in ntddscsi.h wie folgt definiert.

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

Die LBA-Bereiche sind im DataSetRanges-Member von DSM_NOTIFICATION_REQUEST_BLOCK als Array von MP_DEVICE_DATA_SET_RANGE-Strukturen enthalten. MP_DEVICE_DATA_SET_RANGE wird in ntddscsi.h wie folgt definiert.

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

Die DSM_NOTIFICATION_REQUEST_BLOCK-Struktur befindet sich hinter der SRB_IO_CONTROL-Struktur im DataBuffer des SRB.

Die SRB_IO_CONTROL-Struktur für diese IOCTL enthält IOCTL_MINIPORT_SIGNATURE_DSM_NOTIFICATION im Signaturelement und IOCTL_SCSI_MINIPORT_DSM im ControlCode-Element .

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Verfügbar ab Windows 8.1.
Kopfzeile scsi.h (einschließen von Ntddscsi.h, Storport.h)

Weitere Informationen

IOCTL_SCSI_MINIPORT

SRB_IO_CONTROL

STORAGE_REQUEST_BLOCK