Freigeben über


IOCTL_SCSI_MINIPORT_DSM IOCTL (storport.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 von 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 empfehlen wir die Verwendung des Storport-Treibers und Storport Miniport Treibermodelle.
 

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 Größe von (SRB_IO_CONTROL) + Größe des(DSM_NOTIFICATION_REQUEST_BLOCK) sein muss, wobei zusätzlichen Speicher für die enthaltenen MP_DEVICE_DATA_SET_RANGE Strukturen vorhanden ist.

Ausgabepuffer

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

Länge des Ausgabepuffers

Die Länge einer SRB_IO_CONTROL Struktur.

Statusblock

Der resultierende Status der Funktionsanforderung wird im SrbStatus Member von SRB_IO_CONTROLfestgelegt. Im Folgenden sind die IOCTL-Statuscodes des DSM-Datenträgers aufgeführt.

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

Bemerkungen

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 in DataSetRanges- Mitglied 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 nach 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 in seinem Signature Member und IOCTL_SCSI_MINIPORT_DSM im ControlCode Member.

Anforderungen

Anforderung Wert
mindestens unterstützte Client- Windows 8.1.
Header- storport.h (enthalten Ntddscsi.h, Storport.h)

Siehe auch

IOCTL_SCSI_MINIPORT

SRB_IO_CONTROL

STORAGE_REQUEST_BLOCK