IOCTL_EHSTOR_BANDMGMT_CREATE_BAND IOCTL (ehstorbandmgmt.h)
Le nuove bande vengono create in un dispositivo di archiviazione gestito da banda con la richiesta di IOCTL_EHSTOR_BANDMGMT_CREATE_BAND. Una nuova banda viene aggiunta alla tabella delle voci di banda, che include la posizione della banda e le proprietà di sicurezza.
Codice principale
Buffer di input
Il buffer in corrispondenza di Irp->AssociatedIrp.SystemBuffer deve contenere una struttura CREATE_BAND_PARAMETERS seguita dalle strutture BAND_LOCATION_INFO, BAND_SECURITY_INFOe AUTH_KEY.
Se il AuthKeyOffset membro di CREATE_BAND_PARAMETERS è impostato su EHSTOR_BANDMGR_NO_KEY, i dati di input nel buffer di sistema non devono includere una struttura AUTH_KEY.
Lunghezza del buffer di input
Parameters.DeviceIoControl.InputBufferLength indica le dimensioni, in byte, del buffer, che devono essere almeno sizeof (CREATE_BAND_PARAMETERS) + sizeof(BAND_LOCATION_INFO) + sizeof (BAND_SECURITY_INFO) + sizeof(AUTH_KEY).
Buffer di output
Il buffer di output in Irp->AssociatedIrp.SystemBuffer facoltativamente contiene un valore ULONG per l'identificatore della nuova banda creata.
Lunghezza del buffer di output
Parameters.DeviceIoControl.OutputBufferLength deve essere almeno sizeof(ULONG) per ricevere l'identificatore della banda. Se la restituzione dell'identificatore di banda non è desiderata, impostare Parameters.DeviceIoControl.OutputBufferLength su 0.
Blocco di stato
È possibile restituire uno dei valori seguenti nel campo Stato.
Valore di stato | Descrizione |
---|---|
STATUS_SUCCESS | La nuova band è stata creata. |
STATUS_INVALID_DEVICE_REQUEST | Il dispositivo di archiviazione non supporta la gestione della banda. |
STATUS_INVALID_BUFFER_SIZE | La dimensione del buffer di input non è valida. |
STATUS_INVALID_PARAMETER | Le informazioni nel buffer di input non sono valide. |
STATUS_CONFLICTING_ADDRESSES | La banda non è stata creata a causa di posizioni sovrapposte. |
STATUS_INSUFFICIENT_RESOURCES | La band non è stata creata perché la tabella band è già piena. |
STATUS_IO_DEVICE_ERROR | Comunicazione non riuscita. Il dispositivo di archiviazione potrebbe non essere compatibile con i protocolli di sicurezza. |
Osservazioni
L'assegnazione di una chiave di autenticazione a una nuova banda creata è facoltativa. Se non viene specificata alcuna chiave, dove AuthKeyOffset = EHSTOR_BANDMGR_NO_KEY nella struttura CREATE_BAND_PARAMETERS, viene usata una chiave di autenticazione predefinita. Tuttavia, questo lascia la banda vulnerabile a un altro chiamante che può assumere il controllo sulla banda immediatamente dopo la sua creazione modificando la chiave di autenticazione. È consigliabile assegnare una chiave di autenticazione non predefinita alla banda in fase di creazione.
Le modifiche apportate alla tabella band da questa richiesta vengono sottoposte al commit atomico del dispositivo prima del completamento della richiesta IOCTL. Pertanto, è garantito che la banda venga creata con tutte le relative proprietà impostate o non create in tutti i caso in cui si verifichi un sistema o un guasto di alimentazione.
La posizione della nuova banda non deve sovrapporsi a una banda esistente o la richiesta avrà esito negativo con STATUS_CONFLICTING_ADDRESSES.
Se la banda viene sbloccata, i ReadLock o WriteLock membri di BAND_SECURITY_INFO sono impostati su FALSE e CREATEBAND_AUTHKEY_CACHING_ENABLED viene impostato nel Flag membro di CREATE_BAND_PARAMETERS, la memorizzazione nella cache delle credenziali è abilitata. Il driver silo di autenticazione memorizza nella cache la chiave di autenticazione della banda in memoria. Ciò consente al driver silo di autenticare automaticamente l'accesso host al dispositivo di archiviazione quando è necessaria la manutenzione del volume, ad esempio il ridimensionamento della banda.
Fabbisogno
Requisito | Valore |
---|---|
client minimo supportato | Disponibile a partire da Windows 8 |
intestazione | ehstorbandmgmt.h (include EhStorBandMgmt.h) |