IVdsIscsiTarget
COM公式ドキュメント
IVdsIscsiTarget インターフェース (vdshwprv.h) は、iSCSIターゲットに対するクエリおよび構成操作を実行するためのメソッドを提供します。
メソッド 10
vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。
IVdsIscsiTarget::GetProperties (vdshwprv.h) メソッドは、iSCSIターゲットのプロパティを返します。
| pTargetProp | VDS_ISCSI_TARGET_PROP* | out | 呼び出し元が割り当てた VDS_ISCSI_TARGET_PROP 構造体のアドレス。VDSは、この構造体の pwszIscsiName および pwszFriendlyName メンバーが指す文字列のためのメモリを割り当てます。呼び出し元は、CoTaskMemFree 関数を使用してこれらの文字列を解放する必要があります。 |
戻り値
このメソッドは、E_INVALIDARG や E_OUTOFMEMORY などの標準的な HRESULT 値、および VDS固有の戻り値 を返すことがあります。また、HRESULT_FROM_WIN32 マクロを使用して変換された システムエラーコード を返すこともあります。エラーは、VDS自体、または使用されている基盤の VDSプロバイダー から発生する可能性があります。返される可能性のある値には次のものがあります。
| リターンコード/値 | 説明 |
|---|---|
| プロパティが正常に返されました。 | |
|
一部のプロパティは正常に取得されましたが、すべてではありません。デバイスの取り外しなど、すべてのプロパティの取得に失敗する原因は多数存在する点に注意してください。 |
|
プロバイダーのキャッシュが破損しています。これは、接続されているデバイスに関する情報をキャッシュするプロバイダー内部のソフトウェアまたは通信の問題を示します。呼び出し元は、IVdsHwProvider::Reenumerate メソッドに続いて IVdsHwProvider::Refresh メソッドを使用することで、キャッシュを復元できます。 |
|
ポータルオブジェクトは既に存在しません。 |
IVdsIscsiTarget::GetSubSystem (vdshwprv.h) メソッドは、ターゲットが属するサブシステムを返します。
| ppSubSystem | IVdsSubSystem** | out | IVdsSubSystem インターフェースポインターのアドレス。VDSは戻り時にインターフェースを初期化します。呼び出し元はインターフェースを解放する必要があります。 |
戻り値
このメソッドは、E_INVALIDARG や E_OUTOFMEMORY などの標準的な HRESULT 値、および VDS固有の戻り値 を返すことがあります。また、HRESULT_FROM_WIN32 マクロを使用して変換された システムエラーコード を返すこともあります。エラーは、VDS自体、または使用されている基盤の VDSプロバイダー から発生する可能性があります。返される可能性のある値には次のものがあります。
| リターンコード/値 | 説明 |
|---|---|
| サブシステムオブジェクトが正常に返されました。 | |
|
プロバイダーのキャッシュが破損しています。これは、接続されているデバイスに関する情報をキャッシュするプロバイダー内部のソフトウェアまたは通信の問題を示します。呼び出し元は、IVdsHwProvider::Reenumerate メソッドに続いて IVdsHwProvider::Refresh メソッドを使用することで、キャッシュを復元できます。 |
|
ターゲットオブジェクトは既に存在しません。 |
IVdsIscsiTarget::QueryPortalGroups (vdshwprv.h) メソッドは、ターゲット内のiSCSIポータルグループの列挙を返します。
| ppEnum | IEnumVdsObject** | out | ポータルグループを ポータルグループオブジェクト として列挙するために使用できる IEnumVdsObject インターフェースポインターのアドレス。詳細については、列挙オブジェクトの操作 を参照してください。呼び出し元は、不要になったら IUnknown::Release メソッドを呼び出して、インターフェースおよび各ポータルグループオブジェクトを解放する必要があります。 |
戻り値
このメソッドは、E_INVALIDARG や E_OUTOFMEMORY などの標準的な HRESULT 値、および VDS固有の戻り値 を返すことがあります。また、HRESULT_FROM_WIN32 マクロを使用して変換された システムエラーコード を返すこともあります。エラーは、VDS自体、または使用されている基盤の VDSプロバイダー から発生する可能性があります。返される可能性のある値には次のものがあります。
| リターンコード/値 | 説明 |
|---|---|
| ポータルグループの列挙が正常に返されました。ターゲットにポータルグループが存在しない場合、列挙は空になります。 | |
|
プロバイダーのキャッシュが破損しています。これは、接続されているデバイスに関する情報をキャッシュするプロバイダー内部のソフトウェアまたは通信の問題を示します。呼び出し元は、IVdsHwProvider::Reenumerate メソッドに続いて IVdsHwProvider::Refresh メソッドを使用することで、キャッシュを復元できます。 |
|
ターゲットオブジェクトは既に存在しません。 |
|
別の操作が進行中です。この操作は、先行する操作が完了するまで続行できません。 |
IVdsIscsiTarget::QueryAssociatedLuns (vdshwprv.h) メソッドは、ターゲットに関連付けられているLUNの列挙を返します。
| ppEnum | IEnumVdsObject** | out | LUNを LUNオブジェクト として列挙するために使用できる IEnumVdsObject インターフェースポインターのアドレス。詳細については、列挙オブジェクトの操作 を参照してください。呼び出し元は、不要になったら IUnknown::Release メソッドを呼び出して、インターフェースおよび各LUNオブジェクトを解放する必要があります。 |
戻り値
このメソッドは、E_INVALIDARG や E_OUTOFMEMORY などの標準的な HRESULT 値、および VDS固有の戻り値 を返すことがあります。また、HRESULT_FROM_WIN32 マクロを使用して変換された システムエラーコード を返すこともあります。エラーは、VDS自体、または使用されている基盤の VDSプロバイダー から発生する可能性があります。返される可能性のある値には次のものがあります。
| リターンコード/値 | 説明 |
|---|---|
| 関連付けられたLUNの列挙が正常に返されました。ターゲットに関連付けられたLUNが存在しない場合、列挙は空になります。 | |
|
プロバイダーのキャッシュが破損しています。これは、接続されているデバイスに関する情報をキャッシュするプロバイダー内部のソフトウェアまたは通信の問題を示します。呼び出し元は、IVdsHwProvider::Reenumerate メソッドに続いて IVdsHwProvider::Refresh メソッドを使用することで、キャッシュを復元できます。 |
|
ターゲットオブジェクトは既に存在しません。 |
|
別の操作が進行中です。この操作は、先行する操作が完了するまで続行できません。 |
解説(Remarks)
LUNは、IVdsLunIscsi::AssociateTargets メソッドを呼び出すことでターゲットに関連付けられます。
IVdsIscsiTarget::CreatePortalGroup (vdshwprv.h) メソッドは、ポータルグループを作成します。新しいポータルグループオブジェクトのインターフェースポインターを取得できます。
| ppAsync | IVdsAsync** | out | IVdsAsync インターフェースポインターのアドレス。VDSは戻り時にこれを初期化します。呼び出し元はインターフェースを解放する必要があります。このインターフェースを使用して、操作のキャンセル、完了待機、または状態の照会を行います。このインターフェースで IVdsAsync::Wait メソッドを呼び出して成功の HRESULT 値が返された場合は、各インターフェースポインターに対して IUnknown::Release メソッドを呼び出し、VDS_ASYNC_OUTPUT 構造体で返されたインターフェースを解放する必要があります。ただし、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プロバイダー から発生する可能性があります。返される可能性のある値には次のものがあります。
| リターンコード/値 | 説明 |
|---|---|
| ポータルグループが正常に作成されました。 | |
|
これ以上ポータルグループを作成できません。CreatePortalGroup メソッドは新しいポータルグループを作成しませんでした。ppAsync パラメーターで返されたインターフェースポインターに対して IVdsAsync::Wait メソッドを呼び出すと、既存のポータルグループオブジェクトが取得されます。 |
|
プロバイダーのキャッシュが破損しています。これは、接続されているデバイスに関する情報をキャッシュするプロバイダー内部のソフトウェアまたは通信の問題を示します。呼び出し元は、IVdsHwProvider::Reenumerate メソッドに続いて IVdsHwProvider::Refresh メソッドを使用することで、キャッシュを復元できます。 |
|
ターゲットオブジェクトは既に存在しません。 |
|
別の操作が進行中です。この操作は、先行する操作が完了するまで続行できません。 |
IVdsIscsiTarget::Delete (vdshwprv.h) メソッドは、ターゲットにLUNが関連付けられていない場合に、ターゲットとそのすべてのポータルグループを削除します。
| ppAsync | IVdsAsync** | out | IVdsAsync インターフェースポインターのアドレス。VDSは戻り時にこれを初期化します。呼び出し元はインターフェースを解放する必要があります。このインターフェースを使用して、操作のキャンセル、完了待機、または状態の照会を行います。このインターフェースで IVdsAsync::Wait メソッドを呼び出して成功の HRESULT 値が返された場合は、各インターフェースポインターに対して IUnknown::Release メソッドを呼び出し、VDS_ASYNC_OUTPUT 構造体で返されたインターフェースを解放する必要があります。ただし、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プロバイダー から発生する可能性があります。返される可能性のある値には次のものがあります。
| リターンコード/値 | 説明 |
|---|---|
| ポータルグループが正常に作成されました。 | |
|
プロバイダーのキャッシュが破損しています。これは、接続されているデバイスに関する情報をキャッシュするプロバイダー内部のソフトウェアまたは通信の問題を示します。呼び出し元は、IVdsHwProvider::Reenumerate メソッドに続いて IVdsHwProvider::Refresh メソッドを使用することで、キャッシュを復元できます。 |
|
ターゲットオブジェクトは既に存在しません。 |
|
別の操作が進行中です。この操作は、先行する操作が完了するまで続行できません。 |
|
このターゲットにLUNが関連付けられています。このターゲットを削除する前に、すべてのLUNをこのターゲットから関連付け解除する必要があります。 |
IVdsIscsiTarget::SetFriendlyName (vdshwprv.h) メソッドは、ターゲットのフレンドリ名を設定します。
| pwszFriendlyName | LPWSTR | in | ターゲットに割り当てるフレンドリ名を指定する文字列。これはiSCSIエイリアスに対応します。 |
戻り値
このメソッドは、E_INVALIDARG や E_OUTOFMEMORY などの標準的な HRESULT 値、および VDS固有の戻り値 を返すことがあります。また、HRESULT_FROM_WIN32 マクロを使用して変換された システムエラーコード を返すこともあります。エラーは、VDS自体、または使用されている基盤の VDSプロバイダー から発生する可能性があります。返される可能性のある値には次のものがあります。
| リターンコード/値 | 説明 |
|---|---|
| フレンドリ名が正常に設定されました。 | |
|
名前は正常に設定されましたが、サブシステムの制限により切り詰める必要がありました。設定された名前は、pwszFriendlyName パラメーターで渡された名前と一致しない場合があります。 |
|
プロバイダーのキャッシュが破損しています。これは、接続されているデバイスに関する情報をキャッシュするプロバイダー内部のソフトウェアまたは通信の問題を示します。呼び出し元は、IVdsHwProvider::Reenumerate メソッドに続いて IVdsHwProvider::Refresh メソッドを使用することで、キャッシュを復元できます。 |
|
ターゲットオブジェクトは既に存在しません。 |
|
別の操作が進行中です。この操作は、先行する操作が完了するまで続行できません。 |
|
この操作またはパラメーターの組み合わせは、このプロバイダーではサポートされていません。 |
IVdsIscsiTarget::SetSharedSecret メソッドは、ターゲットがイニシエーターを認証する際のCHAP認証で使用される、ターゲットのCHAP共有シークレットを設定します。
| pTargetSharedSecret | VDS_ISCSI_SHARED_SECRET* | in | 共有シークレットを含む VDS_ISCSI_SHARED_SECRET 構造体のアドレス。pSharedSecret メンバーが NULL で、かつ ulSharedSecretSize が0の場合、SetSharedSecret メソッドは既存のシークレットをクリアします。 |
| pwszInitiatorName | LPWSTR | in | シークレットがイニシエーター固有の場合に、共有シークレットを関連付けるiSCSI名を指定する文字列。渡された値はCHAP名として使用されます。アドレスが NULL の場合、変更はすべてのイニシエーターの既定のシークレットに適用されます。 |
戻り値
このメソッドは、E_INVALIDARG や E_OUTOFMEMORY などの標準的な HRESULT 値、および VDS固有の戻り値 を返すことがあります。また、HRESULT_FROM_WIN32 マクロを使用して変換された システムエラーコード を返すこともあります。エラーは、VDS自体、または使用されている基盤の VDSプロバイダー から発生する可能性があります。返される可能性のある値には次のものがあります。
| リターンコード/値 | 説明 |
|---|---|
| 共有シークレットが正常に設定されました。 | |
|
プロバイダーのキャッシュが破損しています。これは、接続されているデバイスに関する情報をキャッシュするプロバイダー内部のソフトウェアまたは通信の問題を示します。呼び出し元は、IVdsHwProvider::Reenumerate メソッドに続いて IVdsHwProvider::Refresh メソッドを使用することで、キャッシュを復元できます。 |
|
ターゲットオブジェクトは既に存在しません。 |
|
この操作またはパラメーターの組み合わせは、このプロバイダーではサポートされていません。 |
|
このターゲットはイニシエーター固有の共有シークレットをサポートしていません。 |
解説(Remarks)
ハードウェアプロバイダーは、ターゲットの共有シークレットを変更するために、サブシステム自体を構成する必要があります。セキュリティのために使用されるシークレットは、VDSによって永続化されず、またローカルコンピューター上のハードウェアプロバイダーによっても永続化されるべきではありません。ハードウェアプロバイダーは、シークレットを安全な方法でサブシステムに送信する必要があり、その永続化はサブシステムが担当します。
一部のiSCSIターゲットは、イニシエーターごとに異なるCHAP共有シークレットを設定することをサポートしている場合があります。ターゲットがイニシエーター固有のシークレットをサポートしていない場合、SetSharedSecret の呼び出しは VDS_E_INITIATOR_SPECIFIC_NOT_SUPPORTED を返します。
IVdsIscsiTarget::RememberInitiatorSharedSecret (vdshwprv.h) メソッドは、相互CHAP認証で使用されるイニシエーターのCHAPシークレットを伝達します。
| pwszInitiatorName | LPWSTR | in | イニシエーターのiSCSI名を指定する文字列。このパラメーターは必須であり、NULL にすることはできません。 |
| pInitiatorSharedSecret | VDS_ISCSI_SHARED_SECRET* | in | 共有シークレットを含む VDS_ISCSI_SHARED_SECRET 構造体のアドレス。 |
戻り値
このメソッドは、E_INVALIDARG や E_OUTOFMEMORY などの標準的な HRESULT 値、および VDS固有の戻り値 を返すことがあります。また、HRESULT_FROM_WIN32 マクロを使用して変換された システムエラーコード を返すこともあります。エラーは、VDS自体、または使用されている基盤の VDSプロバイダー から発生する可能性があります。返される可能性のある値には次のものがあります。
| リターンコード/値 | 説明 |
|---|---|
| 共有シークレットが正常に記憶されました。 | |
|
プロバイダーのキャッシュが破損しています。これは、接続されているデバイスに関する情報をキャッシュするプロバイダー内部のソフトウェアまたは通信の問題を示します。呼び出し元は、IVdsHwProvider::Reenumerate メソッドに続いて IVdsHwProvider::Refresh メソッドを使用することで、キャッシュを復元できます。 |
|
ターゲットオブジェクトは既に存在しません。 |
|
この操作またはパラメーターの組み合わせは、このプロバイダーではサポートされていません。 |
IVdsIscsiTarget::GetConnectedInitiators (vdshwprv.h) メソッドは、現在ターゲットにログインしているイニシエーターのiSCSI名のリストを返します。
| pppwszInitiatorList | LPWSTR** | out | 現在ターゲットにログインしているイニシエーターのiSCSI名を含む文字列の配列を受け取る変数のアドレス。呼び出し元は、CoTaskMemFree 関数を使用して、この配列内の各文字列および配列自体を解放する必要があります。 |
| plNumberOfInitiators | INT* | out | pppwszInitiatorList で返される文字列の数へのポインター。 |
戻り値
このメソッドは、E_INVALIDARG や E_OUTOFMEMORY などの標準的な HRESULT 値、および VDS固有の戻り値 を返すことがあります。また、HRESULT_FROM_WIN32 マクロを使用して変換された システムエラーコード を返すこともあります。エラーは、VDS自体、または使用されている基盤の VDSプロバイダー から発生する可能性があります。返される可能性のある値には次のものがあります。
| リターンコード/値 | 説明 |
|---|---|
| 接続されているイニシエーターのリストが正常に返されました。 | |
|
別の操作が進行中です。この操作は、先行する操作が完了するまで続行できません。 |
|
プロバイダーのキャッシュが破損しています。これは、接続されているデバイスに関する情報をキャッシュするプロバイダー内部のソフトウェアまたは通信の問題を示します。呼び出し元は、IVdsHwProvider::Reenumerate メソッドに続いて IVdsHwProvider::Refresh メソッドを使用することで、キャッシュを復元できます。 |
|
ターゲットオブジェクトは既に存在しません。 |
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
HSP用 COM定義
#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"。
#define global IID_IVdsIscsiTarget "{AA8F5055-83E5-4BCC-AA73-19851A36A849}" #usecom global IVdsIscsiTarget IID_IVdsIscsiTarget "{}" #comfunc global IVdsIscsiTarget_GetProperties 3 var #comfunc global IVdsIscsiTarget_GetSubSystem 4 sptr #comfunc global IVdsIscsiTarget_QueryPortalGroups 5 sptr #comfunc global IVdsIscsiTarget_QueryAssociatedLuns 6 sptr #comfunc global IVdsIscsiTarget_CreatePortalGroup 7 sptr #comfunc global IVdsIscsiTarget_Delete 8 sptr #comfunc global IVdsIscsiTarget_SetFriendlyName 9 wstr #comfunc global IVdsIscsiTarget_SetSharedSecret 10 var,wstr #comfunc global IVdsIscsiTarget_RememberInitiatorSharedSecret 11 wstr,var #comfunc global IVdsIscsiTarget_GetConnectedInitiators 12 var,var ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。#define global IID_IVdsIscsiTarget "{AA8F5055-83E5-4BCC-AA73-19851A36A849}" #usecom global IVdsIscsiTarget IID_IVdsIscsiTarget "{}" #comfunc global IVdsIscsiTarget_GetProperties 3 sptr #comfunc global IVdsIscsiTarget_GetSubSystem 4 sptr #comfunc global IVdsIscsiTarget_QueryPortalGroups 5 sptr #comfunc global IVdsIscsiTarget_QueryAssociatedLuns 6 sptr #comfunc global IVdsIscsiTarget_CreatePortalGroup 7 sptr #comfunc global IVdsIscsiTarget_Delete 8 sptr #comfunc global IVdsIscsiTarget_SetFriendlyName 9 wstr #comfunc global IVdsIscsiTarget_SetSharedSecret 10 sptr,wstr #comfunc global IVdsIscsiTarget_RememberInitiatorSharedSecret 11 wstr,sptr #comfunc global IVdsIscsiTarget_GetConnectedInitiators 12 sptr,sptr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。