IOCTL_SCSI_MINIPORT_DSM IOCTL (storport.h)
Una notifica di Gestione set di dati (DSM) viene trasferita a un driver miniport in una richiesta di codice di controllo IOCTL_SCSI_MINIPORT_DSM . La richiesta di IOCTL_SCSI_MINIPORT_DSM è un sub-IOCTL di IOCTL_SCSI_MINIPORT. Questo IOCTL generato da StorPort in risposta a un'azione DSM, quindi inviato al miniport come STORAGE_REQUEST_BLOCK (SRB) con un tipo di funzione di SRB_FUNCTION_IO_CONTROL . I dati di input e output sono contenuti nel blocco di dati SRB.
Codice principale
Buffer di input
Il buffer specificato nel membro DataBuffer di SRB deve contenere una struttura SRB_IO_CONTROL e una struttura DSM_NOTIFICATION_REQUEST_BLOCK .
Lunghezza del buffer di input
DataTransferLength indica le dimensioni, in byte, del buffer, che deve essere almeno sizeof (SRB_IO_CONTROL) + sizeof(DSM_NOTIFICATION_REQUEST_BLOCK), con archiviazione aggiuntiva per le strutture MP_DEVICE_DATA_SET_RANGE incluse.
Buffer di output
Una struttura di SRB_IO_CONTROL aggiornata viene restituita al buffer dei dati in SRB. SrbStatus contiene il risultato dell'elaborazione del miniport della richiesta.
Lunghezza del buffer di output
Lunghezza di una struttura SRB_IO_CONTROL .
Blocco dello stato
Lo stato risultante della richiesta di funzione è impostato nel membro SrbStatus di SRB_IO_CONTROL. Di seguito sono riportati i codici di stato IOCTL del disco DSM.
Stato SRB | Descrizione |
---|---|
SRB_STATUS_SUCCESS | La richiesta è stata completata correttamente. |
SRB_STATUS_INVALID_REQUEST | La richiesta contiene una dimensione del buffer non valida |
Commenti
DSM_NOTIFICATION_REQUEST_BLOCK
Una struttura DSM_NOTIFICATION_REQUEST_BLOCK segue immediatamente la struttura SRB_IO_CONTROL nel buffer di dati della SRB. DSM_NOTIFICATION_REQUEST_BLOCK è definito in ntddscsi.h come indicato di seguito.
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
Gli intervalli LBA sono inclusi nel membro DataSetRanges di DSM_NOTIFICATION_REQUEST_BLOCK come matrice di strutture MP_DEVICE_DATA_SET_RANGE. MP_DEVICE_DATA_SET_RANGE è definito in ntddscsi.h come indicato di seguito.
typedef struct _MP_DEVICE_DATA_SET_RANGE {
LONGLONG StartingOffset;
ULONGLONG LengthInBytes;
} MP_DEVICE_DATA_SET_RANGE, *PMP_DEVICE_DATA_SET_RANGE;
La struttura DSM_NOTIFICATION_REQUEST_BLOCK si trova dopo la struttura SRB_IO_CONTROL nella struttura DataBuffer di SRB.
La struttura SRB_IO_CONTROL per questo IOCTL contiene IOCTL_MINIPORT_SIGNATURE_DSM_NOTIFICATION nel membroSignature e IOCTL_SCSI_MINIPORT_DSM nel membro ControlCode.
Requisiti
Requisito | Valore |
---|---|
Client minimo supportato | Windows 8.1. |
Intestazione | storport.h (include Ntddscsi.h, Storport.h) |
Vedi anche
Commenti e suggerimenti
https://aka.ms/ContentUserFeedback.
Presto disponibile: Nel corso del 2024 verranno gradualmente disattivati i problemi di GitHub come meccanismo di feedback per il contenuto e ciò verrà sostituito con un nuovo sistema di feedback. Per altre informazioni, vedereInvia e visualizza il feedback per