IOCTL_EHSTOR_BANDMGMT_CREATE_BAND IOCTL (ehstorbandmgmt.h)
De nouvelles bandes sont créées sur un périphérique de stockage géré par bande avec la demande 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 dans Irp-AssociatedIrp.SystemBuffer> doit contenir une structure CREATE_BAND_PARAMETERS suivie des structures BAND_LOCATION_INFO, BAND_SECURITY_INFO et AUTH_KEY.
Si le membre AuthKeyOffset 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 de 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 dans 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 État .
Valeur d’état | Description |
---|---|
STATUS_SUCCESS | Le nouveau groupe a été créé. |
STATUS_INVALID_DEVICE_REQUEST | Le périphérique 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 des emplacements qui se chevauchent. |
STATUS_INSUFFICIENT_RESOURCES | La bande n’a pas été créée, car la table de bandes est déjà pleine. |
STATUS_IO_DEVICE_ERROR | Échec de la communication. Le périphérique 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 rend la bande vulnérable à un autre appelant qui peut prendre le contrôle de la bande immédiatement après sa création en modifiant sa clé d’authentification. Il est recommandé d’affecter une clé d’authentification autre que celle par défaut à la bande au moment de la création.
Les modifications apportées à la table de bandes par cette requête sont validées sur l’appareil de manière atomique avant la fin de la requête 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 si un système ou une panne d’alimentation se produit.
L’emplacement de la nouvelle bande ne doit pas chevaucher une bande existante, sinon cette demande échouera avec STATUS_CONFLICTING_ADDRESSES.
Si la bande est déverrouillée, les membres ReadLock ou WriteLock de BAND_SECURITY_INFO ont la valeur FALSE et CREATEBAND_AUTHKEY_CACHING_ENABLED est défini dans le membre Indicateurs 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 au périphérique de stockage lorsque la maintenance du volume est nécessaire, comme le redimensionnement de la bande.
Configuration requise
Condition requise | Valeur |
---|---|
Client minimal pris en charge | Disponible à partir de Windows 8 |
En-tête | ehstorbandmgmt.h (inclure EhStorBandMgmt.h) |