IVdsHwProviderStoragePools::CreateLunInStoragePool メソッド (vdshwprv.h)
[Windows 8とWindows Server 2012以降、仮想ディスク サービス COM インターフェイスは Windows Storage Management API に置き換えられます。
記憶域プールに LUN を作成します。
構文
HRESULT CreateLunInStoragePool(
[in] VDS_LUN_TYPE type,
[in] ULONGLONG ullSizeInBytes,
[in] VDS_OBJECT_ID StoragePoolId,
[in] LPWSTR pwszUnmaskingList,
[in] VDS_HINTS2 *pHints2,
[out] IVdsAsync **ppAsync
);
パラメーター
[in] type
作成する LUN の種類を指定するVDS_LUN_TYPE列挙値。 新しい LUN には、自動マジックタイプまたは特定の RAID タイプを指定できますが、両方を指定することはできません。 呼び出し元が automagic 型を指定する場合は、 pHints2 パラメーターに 1 つ以上の自動マジック ヒントを指定する必要があります。
新しい LUN オブジェクトのインターフェイス ポインターは、ppAsync パラメーターで返されるインターフェイス ポインターで IVdsAsync::Wait メソッドを呼び出すことによって取得できます。 Wait によって返されるVDS_ASYNC_OUTPUT構造体には、cl.p LunUnk メンバー内の LUN オブジェクト インターフェイス ポインターが含まれています。
[in] ullSizeInBytes
新しい LUN のサイズ (バイト単位)。 プロバイダーは、アラインメント要件やその他の制限を満たすために、サイズを切り上げたり下げたりできます。 (ほとんどの場合、プロバイダーは切り上げ、まれな例外を除き、LUN が少なくとも要求された大きさであることを確認します)。
LUN が作成されたら、呼び出し元は IVds Lun::GetProperties メソッドを呼び出すことによって、LUN の実際のサイズを決定できます。
[in] StoragePoolId
LUN を作成する記憶域プールを識別する VDS_OBJECT_ID 値。 このパラメーターは必須であり、GUID_NULLすることはできません。
[in] pwszUnmaskingList
LUN へのアクセスを許可するコンピューターを指定する一覧。 リストは、セミコロンで区切られた NULL で終わる、人間が読み取り可能な文字列です。
値が "" の場合、ストレージ サブシステムに接続されている HBA ポートを持つすべてのコンピューターに LUN へのアクセス権が付与されます。 値が "" の場合、LUN へのアクセス権を付与するコンピューターはありません。
"*" または "" が指定されている場合、他の値を指定することはできません。
ファイバー チャネル ネットワークとシリアル接続 SCSI (SAS) ネットワークの場合、各エントリは、LUN がマスクされていない各ポートの 64 ビットのワールドワイド名 (WWN) で、16 進数の文字列 (16 文字の長さ) として書式設定され、最上位バイトが先頭になります。 たとえば、WWN アドレス 01:23:45:67:89:AB:CD:EF は "0123456789ABCDEF" として表されます。 詳細については、 ファイバー チャネル と SAS の T10 仕様に関するページを参照してください。
iSCSI ネットワークの場合、各エントリは、LUN がマスク解除される各イニシエーターの iSCSI 修飾名 (IQN) です。 特定のイニシエーターにマスクされていない LUN は、そのイニシエーターに関連付けられていると見なされます。
[in] pHints2
LUN の作成に使用するヒントを指定する VDS_HINTS2 構造体へのポインター。 プロバイダーは、LUN にヒントを適用する必要はありません。 VDS_HINTS2構造体で指定されたヒントは、プロバイダーへの要求のみです。
LUN が作成されると、呼び出し元は IVds Lun2::QueryHints2 メソッドを呼び出すことによって、プロバイダーが適用したヒントを特定できます。
型パラメーターで自動マジック以外の 型 を指定する場合、このパラメーターは NULL である必要があります。
[out] ppAsync
正常に完了すると、この操作を監視および制御するための IVdsAsync インターフェイスを受け取る IVdsAsync インターフェイスへのポインター。 呼び出し元は、受信したインターフェイスが完了したら、それを解放する必要があります。 インターフェイスで IVdsAsync::Wait メソッドが呼び出され、成功した HRESULT 値が返された場合、 VDS_ASYNC_OUTPUT 構造体で返されるインターフェイスは、各インターフェイス ポインターで IUnknown::Release メソッドを呼び出して解放する必要があります。 ただし、Wait がエラー HRESULT 値を返す場合、または Wait の pHrResult パラメーターがエラー HRESULT 値を受け取った場合、VDS_ASYNC_OUTPUT構造体のインターフェイス ポインターは NULL であり、解放する必要はありません。 成功または失敗の HRESULT 値をテストするには、Winerror.h で定義 されている SUCCEEDED マクロと FAILED マクロを 使用します。
戻り値
このメソッドは、E_INVALIDARGやE_OUTOFMEMORYなどの標準の HRESULT 値と、 VDS 固有の戻り値を返すことができます。 また、HRESULT_FROM_WIN32 マクロを使用して、変換されたシステム エラー コードを返すこともできます。 エラーは、VDS 自体または使用されている基になる VDS プロバイダー から発生する可能性があります。 可能な戻り値は次のとおりです。
リターン コード | 説明 |
---|---|
|
メソッドは正常に完了しました。 |
解説
型パラメーターと pHints2 パラメーターに適切な値を選択することで、呼び出し元は LUN の属性を完全、部分的、または最小限に指定できます。 プロバイダーは、pHints2 パラメーターが指すVDS_HINTS2構造で指定された自動マジック ヒントに基づいて、指定されていない属性を自動的に含めることができます。
実装者へのメモ: プロバイダーは、このメソッドの呼び出しで非同期操作が開始されない場合でも、ppAsync パラメーターで IVdsAsync インターフェイス ポインターを返す必要があります。
pwszUnmaskingList パラメーターの WWN と IQN のリストには、重複する名前が含まれている場合があります。 リスト内のすべての名前を検証し、必要に応じて重複を削除するのはプロバイダーの責任です。
Create LunInStoragePool メソッドに応答し、新しい LUN を任意のホストにマスク解除する前に、プロバイダーは最初と最後のメガバイトにゼロを入力し、LUN は初期化されません。
E_INVALIDARGとVDS_E_NOT_SUPPORTED戻り値には微妙な違いがあります。 プロバイダーは、VDS API がクライアントに提供できるすべての機能を実装するとは思われません。 たとえば、 Create LunInStoragePool メソッドは、さまざまな種類の LUN (単純、ミラー、ストライプ、パリティなど) を作成する機能を公開します。 ただし、プロバイダーはすべての種類の LUN をサポートする必要はありません。 呼び出し元が有効なVDS_LUN_TYPE列挙値ではない型パラメーターの値を指定した場合、プロバイダーはE_INVALIDARGを返す必要があります。 呼び出し元がプロバイダーがサポートしていない有効な 型 の値を指定した場合、プロバイダーはVDS_E_NOT_SUPPORTEDを返す必要があります。
要件
サポートされている最小のクライアント | Windows 7 [デスクトップ アプリのみ] |
サポートされている最小のサーバー | Windows Server 2008 R2 [デスクトップ アプリのみ] |
対象プラットフォーム | Windows |
ヘッダー | vdshwprv.h |
Library | Uuid.lib |