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.
Hauptcode
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) |