Partager via


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

IRP_MJ_DEVICE_CONTROL

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)

Voir aussi

BAND_LOCATION_INFO

BAND_SECURITY_INFO

CREATE_BAND_PARAMETERS