IOCTL_EHSTOR_BANDMGMT_CREATE_BAND IOCTL (ehstorbandmgmt.h)
De nouvelles bandes sont créées sur un appareil de stockage géré par bande avec la demande de IOCTL_EHSTOR_BANDMGMT_CREATE_BAND. Une nouvelle bande est ajoutée à la table des entrées de bande, qui inclut l’emplacement de la bande et les propriétés de sécurité.
Code principal
Mémoire tampon d’entrée
La mémoire tampon à Irp->AssociatedIrp.SystemBuffer doit contenir une structure CREATE_BAND_PARAMETERS suivie des structures BAND_LOCATION_INFO, BAND_SECURITY_INFOet AUTH_KEY.
Si le AuthKeyOffset membre de CREATE_BAND_PARAMETERS est défini sur EHSTOR_BANDMGR_NO_KEY, les données d’entrée dans la mémoire tampon système n’ont pas besoin d’inclure une structure AUTH_KEY.
Longueur de la mémoire tampon d’entrée
Parameters.DeviceIoControl.InputBufferLength indique la taille, en octets, de la mémoire tampon, qui doit être au moins sizeof (CREATE_BAND_PARAMETERS) + sizeof(BAND_LOCATION_INFO) + sizeof (BAND_SECURITY_INFO) + sizeof(AUTH_KEY).
Mémoire tampon de sortie
La mémoire tampon de sortie à Irp->AssociatedIrp.SystemBuffer contient éventuellement une valeur ULONG pour l’identificateur de la bande nouvellement créée.
Longueur de la mémoire tampon de sortie
Parameters.DeviceIoControl.OutputBufferLength doit être au moins sizeof(ULONG) pour recevoir l’identificateur de bande. Si le retour de l’identificateur de bande n’est pas souhaité, définissez Parameters.DeviceIoControl.OutputBufferLength sur 0.
Bloc d’état
L’une des valeurs suivantes peut être retournée dans le champ Status.
Valeur d’état | Description |
---|---|
STATUS_SUCCESS | Le nouveau groupe a été créé. |
STATUS_INVALID_DEVICE_REQUEST | L’appareil de stockage ne prend pas en charge la gestion des bandes. |
STATUS_INVALID_BUFFER_SIZE | La taille de la mémoire tampon d’entrée n’est pas valide. |
STATUS_INVALID_PARAMETER | Les informations contenues dans la mémoire tampon d’entrée ne sont pas valides. |
STATUS_CONFLICTING_ADDRESSES | La bande n’a pas été créée en raison de emplacements qui se chevauchent. |
STATUS_INSUFFICIENT_RESOURCES | La bande n’a pas été créée, car la table de bande est déjà pleine. |
STATUS_IO_DEVICE_ERROR | Échec de la communication. L’appareil de stockage peut être incompatible avec les protocoles de sécurité. |
Remarques
L’attribution d’une clé d’authentification à une bande nouvellement créée est facultative. Si aucune clé n’est fournie, où AuthKeyOffset = EHSTOR_BANDMGR_NO_KEY dans la structure CREATE_BAND_PARAMETERS, une clé d’authentification par défaut est utilisée. Toutefois, cela laisse la bande vulnérable à un autre appelant qui peut prendre le contrôle sur la bande immédiatement après sa création en modifiant sa clé d’authentification. Il est recommandé d’affecter une clé d’authentification non par défaut à la bande au moment de la création.
Les modifications apportées à la table de bande par cette demande sont validées sur l’appareil de manière atomique avant la fin de la demande IOCTL. Par conséquent, il est garanti que la bande est créée avec toutes ses propriétés définies ou non créées du tout si un système ou une panne d’alimentation se produit.
L’emplacement de la nouvelle bande ne doit pas chevaucher une bande existante ou cette demande échoue avec STATUS_CONFLICTING_ADDRESSES.
Si la bande est déverrouillée, les ReadLock ou membres writeLock de BAND_SECURITY_INFO sont définis sur FALSE et CREATEBAND_AUTHKEY_CACHING_ENABLED est défini dans le Flags membre de CREATE_BAND_PARAMETERS, la mise en cache des informations d’identification est activée. Le pilote de silo d’authentification met en cache la clé d’authentification de bande en mémoire. Cela permet au pilote de silo d’authentifier automatiquement l’accès de l’hôte à l’appareil de stockage lorsque la maintenance du volume est requise, par exemple le redimensionnement de la bande.
Exigences
Exigence | Valeur |
---|---|
client minimum pris en charge | Disponible à partir de Windows 8 |
d’en-tête | ehstorbandmgmt.h (include EhStorBandMgmt.h) |