IOCTL_EHSTOR_BANDMGMT_CREATE_BAND IOCTL (ehstorbandmgmt.h)
IOCTL_EHSTOR_BANDMGMT_CREATE_BAND要求を使用して、バンド管理ストレージ デバイスに新しいバンドが作成されます。 バンドエントリのテーブルに新しいバンドが追加されます。これには、バンドの場所とセキュリティプロパティが含まれます。
メジャー コード
[入力バッファー]
Irp-AssociatedIrp.SystemBuffer> のバッファーには、CREATE_BAND_PARAMETERS構造体の後に、BAND_LOCATION_INFO、BAND_SECURITY_INFO、およびAUTH_KEY構造体が含まれている必要があります。
CREATE_BAND_PARAMETERS の AuthKeyOffset メンバーがEHSTOR_BANDMGR_NO_KEYに設定されている場合、システム バッファー内の入力データにAUTH_KEY構造体を含める必要はありません。
入力バッファーの長さ
Parameters.DeviceIoControl.InputBufferLength は、バッファーのサイズ (バイト単位) を示します。バッファーのサイズは、少なくとも sizeof (CREATE_BAND_PARAMETERS) + sizeof(BAND_LOCATION_INFO) + sizeof (BAND_SECURITY_INFO) + sizeof(AUTH_KEY) である必要があります。
出力バッファー
Irp-AssociatedIrp.SystemBuffer> の出力バッファーには、必要に応じて、新しく作成されたバンドの識別子の ULONG 値が含まれます。
出力バッファーの長さ
Parameters.DeviceIoControl.OutputBufferLength は、バンド識別子を受信するには、少なくとも sizeof(ULONG) である必要があります。 バンド識別子の戻り値が必要ない場合は、 Parameters.DeviceIoControl.OutputBufferLength を 0 に設定します。
ステータス ブロック
[状態] フィールドには、次のいずれかの値を返すことができます。
状態の値 | 説明 |
---|---|
STATUS_SUCCESS | 新しいバンドが作成されました。 |
STATUS_INVALID_DEVICE_REQUEST | ストレージ デバイスは、バンド管理をサポートしていません。 |
STATUS_INVALID_BUFFER_SIZE | 入力バッファー サイズが無効です。 |
STATUS_INVALID_PARAMETER | 入力バッファー内の情報が無効です。 |
STATUS_CONFLICTING_ADDRESSES | 場所が重複しているため、バンドが作成されませんでした。 |
STATUS_INSUFFICIENT_RESOURCES | バンド テーブルが既にいっぱいになっているため、バンドは作成されませんでした。 |
STATUS_IO_DEVICE_ERROR | 通信に失敗しました。 ストレージ デバイスがセキュリティ プロトコルと互換性がない可能性があります。 |
注釈
新しく作成されたバンドに認証キーを割り当てることは省略可能です。 AuthKeyOffset = がCREATE_BAND_PARAMETERS構造でEHSTOR_BANDMGR_NO_KEYするキーが指定されていない場合は、既定の認証キーが使用されます。 ただし、これにより、認証キーを変更して、作成直後にバンドを制御できる別の呼び出し元に対してバンドが脆弱になります。 作成時に既定以外の認証キーをバンドに割り当てることをお勧めします。
この要求によってバンド テーブルに加えられた変更は、IOCTL 要求が完了する前に、デバイスにアトミックにコミットされます。 したがって、システムまたは電源障害が発生した場合に、バンドがすべてのプロパティセットで作成されるか、まったく作成されないことが保証されます。
新しいバンドの場所が既存のバンドと重複しないようにするか、この要求はSTATUS_CONFLICTING_ADDRESSESで失敗します。
バンドのロックが解除されている場合、BAND_SECURITY_INFOの ReadLock メンバーまたは WriteLock メンバーが FALSE に設定され、CREATEBAND_AUTHKEY_CACHING_ENABLEDがCREATE_BAND_PARAMETERSの Flags メンバーに設定されている場合、資格情報のキャッシュが有効になります。 認証サイロ ドライバーは、バンド認証キーをメモリにキャッシュします。 これにより、サイロ ドライバーは、バンドのサイズ変更など、ボリュームのメンテナンスが必要な場合に、ストレージ デバイスへのホスト アクセスを自動的に認証できます。
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows 8 以降で使用可能 |
Header | ehstorbandmgmt.h (EhStorBandMgmt.h を含む) |