IVdsController
COM公式ドキュメント
IVdsController (vdshwprv.h) インターフェイスは、コントローラーに対してクエリおよび構成の操作を実行するためのメソッドを提供します。
メソッド 8
vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。
IVdsController::GetProperties メソッド (vdshwprv.h) は、コントローラーのプロパティを返します。
| pControllerProp | VDS_CONTROLLER_PROP* | out | 呼び出し元が割り当てて渡す VDS_CONTROLLER_PROP 構造体のアドレス。VDS は、pwszFriendlyName および pwszIdentification メンバー文字列のためのメモリを割り当てます。呼び出し元は、CoTaskMemFree 関数を使用してこれらの文字列を解放する必要があります。 |
戻り値
このメソッドは、E_INVALIDARG や E_OUTOFMEMORY などの標準的な HRESULT 値のほか、VDS 固有の戻り値を返すことがあります。また、HRESULT_FROM_WIN32 マクロを使用して変換されたシステムエラーコードを返す場合もあります。エラーは VDS 自体、または使用されている基盤の VDS プロバイダーから発生する可能性があります。戻り値には次のものが含まれます。
| リターンコード/値 | 説明 |
|---|---|
|
一部のプロパティは正常に取得されましたが、すべてではありません。デバイスの取り外しなど、すべてのプロパティを取得できない理由は多数存在する点に注意してください。 |
|
この戻り値は、アレイに関する情報をキャッシュするプロバイダー内部でソフトウェアまたは通信の問題が発生したことを示します。キャッシュを復元するには、IVdsHwProvider::Reenumerate メソッドを実行した後、IVdsHwProvider::Refresh メソッドを実行してください。 |
|
コントローラーオブジェクトは既に存在しません。 |
IVdsController::GetSubSystem メソッド (vdshwprv.h) は、コントローラーが属するサブシステムを返します。
| ppSubSystem | IVdsSubSystem** | out | IVdsSubSystem インターフェイスポインターのアドレス。呼び出し元はインターフェイスを解放する必要があります。 |
戻り値
このメソッドは、E_INVALIDARG や E_OUTOFMEMORY などの標準的な HRESULT 値のほか、VDS 固有の戻り値を返すことがあります。また、HRESULT_FROM_WIN32 マクロを使用して変換されたシステムエラーコードを返す場合もあります。エラーは VDS 自体、または使用されている基盤の VDS プロバイダーから発生する可能性があります。戻り値には次のものが含まれます。
| リターンコード/値 | 説明 |
|---|---|
|
この戻り値は、アレイに関する情報をキャッシュするプロバイダー内部でソフトウェアまたは通信の問題が発生したことを示します。キャッシュを復元するには、IVdsHwProvider::Reenumerate メソッドを実行した後、IVdsHwProvider::Refresh メソッドを実行してください。 |
|
コントローラーオブジェクトは既に存在しません。 |
IVdsController::GetPortProperties メソッド (vdshwprv.h) は、指定されたコントローラーポートのプロパティを返します。
| sPortNumber | SHORT | in | ポートの番号。ポート番号は永続的です。ポートは 0 から番号付けされます。 |
| pPortProp | VDS_PORT_PROP* | out | 呼び出し元が割り当てて渡す VDS_PORT_PROP 構造体のアドレス。VDS は、pwszFriendlyName および pwszIdentification メンバー文字列のためのメモリを割り当てます。呼び出し元は、CoTaskMemFree 関数を使用してこれらの文字列を解放する必要があります。 |
戻り値
このメソッドは、E_INVALIDARG や E_OUTOFMEMORY などの標準的な HRESULT 値のほか、VDS 固有の戻り値を返すことがあります。また、HRESULT_FROM_WIN32 マクロを使用して変換されたシステムエラーコードを返す場合もあります。エラーは VDS 自体、または使用されている基盤の VDS プロバイダーから発生する可能性があります。戻り値には次のものが含まれます。
| リターンコード/値 | 説明 |
|---|---|
|
この戻り値は、アレイに関する情報をキャッシュするプロバイダー内部でソフトウェアまたは通信の問題が発生したことを示します。キャッシュを復元するには、IVdsHwProvider::Reenumerate メソッドを実行した後、IVdsHwProvider::Refresh メソッドを実行してください。 |
|
コントローラーオブジェクトは既に存在しません。 |
|
この操作、またはパラメーターの組み合わせは、このプロバイダーではサポートされていません。 |
解説(Remarks)
ポートの総数を取得するには、IVdsController::GetProperties メソッドを使用してください。
IVdsController::FlushCache メソッド (vdshwprv.h) は、コントローラーのキャッシュを永続ストアにフラッシュします。
戻り値
このメソッドは、E_OUTOFMEMORY などの標準的な HRESULT 値のほか、VDS 固有の戻り値を返すことがあります。また、HRESULT_FROM_WIN32 マクロを使用して変換されたシステムエラーコードを返す場合もあります。エラーは VDS 自体、または使用されている基盤の VDS プロバイダーから発生する可能性があります。戻り値には次のものが含まれます。
| リターンコード/値 | 説明 |
|---|---|
|
この戻り値は、アレイに関する情報をキャッシュするプロバイダー内部でソフトウェアまたは通信の問題が発生したことを示します。キャッシュを復元するには、IVdsHwProvider::Reenumerate メソッドを実行した後、IVdsHwProvider::Refresh メソッドを実行してください。 |
|
コントローラーオブジェクトは既に存在しません。 |
|
コントローラーが失敗状態にあり、要求された操作を実行できません。 |
|
別の操作が進行中です。この操作は、先行する操作が完了するまで続行できません。 |
|
この操作、またはパラメーターの組み合わせは、このプロバイダーではサポートされていません。 |
IVdsController::InvalidateCache メソッド (vdshwprv.h) は、コントローラーのキャッシュを無効化します。
戻り値
このメソッドは、E_OUTOFMEMORY などの標準的な HRESULT 値のほか、VDS 固有の戻り値を返すことがあります。また、HRESULT_FROM_WIN32 マクロを使用して変換されたシステムエラーコードを返す場合もあります。エラーは VDS 自体、または使用されている基盤の VDS プロバイダーから発生する可能性があります。戻り値には次のものが含まれます。
| リターンコード/値 | 説明 |
|---|---|
|
この戻り値は、アレイに関する情報をキャッシュするプロバイダー内部でソフトウェアまたは通信の問題が発生したことを示します。キャッシュを復元するには、IVdsHwProvider::Reenumerate メソッドを実行した後、IVdsHwProvider::Refresh メソッドを実行してください。 |
|
コントローラーオブジェクトは既に存在しません。 |
|
別の操作が進行中です。この操作は、先行する操作が完了するまで続行できません。 |
|
この操作、またはパラメーターの組み合わせは、このプロバイダーではサポートされていません。 |
IVdsController::Reset メソッド (vdshwprv.h) は、コントローラーを再初期化し、キャッシュを無効化します。
戻り値
このメソッドは、E_OUTOFMEMORY などの標準的な HRESULT 値のほか、VDS 固有の戻り値を返すことがあります。また、HRESULT_FROM_WIN32 マクロを使用して変換されたシステムエラーコードを返す場合もあります。エラーは VDS 自体、または使用されている基盤の VDS プロバイダーから発生する可能性があります。戻り値には次のものが含まれます。
| リターンコード/値 | 説明 |
|---|---|
|
この戻り値は、アレイに関する情報をキャッシュするプロバイダー内部でソフトウェアまたは通信の問題が発生したことを示します。キャッシュを復元するには、IVdsHwProvider::Reenumerate メソッドを実行した後、IVdsHwProvider::Refresh メソッドを実行してください。 |
|
コントローラーオブジェクトは既に存在しません。 |
|
別の操作が進行中です。この操作は、先行する操作が完了するまで続行できません。 |
|
この操作、またはパラメーターの組み合わせは、このプロバイダーではサポートされていません。 |
IVdsController::QueryAssociatedLuns メソッド (vdshwprv.h) は、コントローラーが関連付けられている LUN の列挙を返します。
| ppEnum | IEnumVdsObject** | out | LUN を LUN オブジェクトとして列挙するために使用できる IEnumVdsObject インターフェイスポインターのアドレス。詳細については、列挙オブジェクトの操作を参照してください。呼び出し元は、インターフェイスおよび各 LUN オブジェクトが不要になったら、IUnknown::Release メソッドを呼び出して解放する必要があります。 |
戻り値
このメソッドは、E_INVALIDARG や E_OUTOFMEMORY などの標準的な HRESULT 値のほか、VDS 固有の戻り値を返すことがあります。また、HRESULT_FROM_WIN32 マクロを使用して変換されたシステムエラーコードを返す場合もあります。エラーは VDS 自体、または使用されている基盤の VDS プロバイダーから発生する可能性があります。戻り値には次のものが含まれます。
| リターンコード/値 | 説明 |
|---|---|
| 関連付けられた LUN の列挙を返します。コントローラーに関連付けられた LUN がない場合、列挙は空になります。 | |
|
この戻り値は、アレイに関する情報をキャッシュするプロバイダー内部でソフトウェアまたは通信の問題が発生したことを示します。キャッシュを復元するには、IVdsHwProvider::Reenumerate メソッドを実行した後、IVdsHwProvider::Refresh メソッドを実行してください。 |
|
コントローラーオブジェクトは既に存在しません。 |
|
コントローラーが失敗状態にあり、要求された操作を実行できません。 |
|
この操作、またはパラメーターの組み合わせは、このプロバイダーではサポートされていません。 |
解説(Remarks)
1 つの LUN に関連付けられたコントローラーを取得するには、IVdsLun::AssociateControllers メソッドを使用してください。
IVdsController::SetStatus メソッド (vdshwprv.h) は、コントローラーの状態を指定された値に設定します。
| status | VDS_CONTROLLER_STATUS | in | VDS_CONTROLLER_STATUS によって列挙される値。呼び出し元は、指定可能な列挙値のサブセットを渡すことができます。VDS_CS_UNKNOWN を渡すと E_INVALIDARG が返されます。 |
戻り値
このメソッドは、E_INVALIDARG や E_OUTOFMEMORY などの標準的な HRESULT 値のほか、VDS 固有の戻り値を返すことがあります。また、HRESULT_FROM_WIN32 マクロを使用して変換されたシステムエラーコードを返す場合もあります。エラーは VDS 自体、または使用されている基盤の VDS プロバイダーから発生する可能性があります。戻り値には次のものが含まれます。
| リターンコード/値 | 説明 |
|---|---|
|
この戻り値は、アレイに関する情報をキャッシュするプロバイダー内部でソフトウェアまたは通信の問題が発生したことを示します。キャッシュを復元するには、IVdsHwProvider::Reenumerate メソッドを実行した後、IVdsHwProvider::Refresh メソッドを実行してください。 |
|
コントローラーオブジェクトは既に存在しません。 |
|
コントローラーが失敗状態にあり、要求された操作を実行できません。 |
|
別の操作が進行中です。この操作は、先行する操作が完了するまで続行できません。 |
|
この操作、またはパラメーターの組み合わせは、このプロバイダーではサポートされていません。 |
解説(Remarks)
このメソッドを使用すると、単一のコントローラーの状態を設定できます。IVdsSubSystem::SetControllerStatus メソッドを呼び出すことで、サブシステム内のすべてのコントローラーの状態を一度に設定することもできます。コントローラーの現在の状態を取得するには、IVdsController::GetProperties メソッドを使用してください。
実装者は、状態を指定された状態にするために必要な操作を実行する責任があります。たとえば、呼び出し元がコントローラーの状態として VDS_CS_OFFLINE を渡した場合、まずコントローラーのキャッシュをクリアする必要がある場合があります。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
HSP用 COM定義
#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"。
#define global IID_IVdsController "{CB53D96E-DFFB-474A-A078-790D1E2BC082}" #usecom global IVdsController IID_IVdsController "{}" #comfunc global IVdsController_GetProperties 3 var #comfunc global IVdsController_GetSubSystem 4 sptr #comfunc global IVdsController_GetPortProperties 5 int,var #comfunc global IVdsController_FlushCache 6 #comfunc global IVdsController_InvalidateCache 7 #comfunc global IVdsController_Reset 8 #comfunc global IVdsController_QueryAssociatedLuns 9 sptr #comfunc global IVdsController_SetStatus 10 int ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。#define global IID_IVdsController "{CB53D96E-DFFB-474A-A078-790D1E2BC082}" #usecom global IVdsController IID_IVdsController "{}" #comfunc global IVdsController_GetProperties 3 sptr #comfunc global IVdsController_GetSubSystem 4 sptr #comfunc global IVdsController_GetPortProperties 5 int,sptr #comfunc global IVdsController_FlushCache 6 #comfunc global IVdsController_InvalidateCache 7 #comfunc global IVdsController_Reset 8 #comfunc global IVdsController_QueryAssociatedLuns 9 sptr #comfunc global IVdsController_SetStatus 10 int ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。