Win32 API 日本語リファレンス
ホームStorage.VirtualDiskService › IVdsController

IVdsController

COM
IIDcb53d96e-dffb-474a-a078-790d1e2bc082継承元IUnknown自前メソッド開始 vtbl3

公式ドキュメント

IVdsController (vdshwprv.h) インターフェイスは、コントローラーに対してクエリおよび構成の操作を実行するためのメソッドを提供します。

メソッド 8

vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。

vtbl 3 HRESULT GetProperties(VDS_CONTROLLER_PROP* pControllerProp)

IVdsController::GetProperties メソッド (vdshwprv.h) は、コントローラーのプロパティを返します。

pControllerPropVDS_CONTROLLER_PROP*out呼び出し元が割り当てて渡す VDS_CONTROLLER_PROP 構造体のアドレス。VDS は、pwszFriendlyName および pwszIdentification メンバー文字列のためのメモリを割り当てます。呼び出し元は、CoTaskMemFree 関数を使用してこれらの文字列を解放する必要があります。

戻り値

このメソッドは、E_INVALIDARGE_OUTOFMEMORY などの標準的な HRESULT 値のほか、VDS 固有の戻り値を返すことがあります。また、HRESULT_FROM_WIN32 マクロを使用して変換されたシステムエラーコードを返す場合もあります。エラーは VDS 自体、または使用されている基盤の VDS プロバイダーから発生する可能性があります。戻り値には次のものが含まれます。

リターンコード/値 説明
VDS_S_PROPERTIES_INCOMPLETE
0x00042715L
一部のプロパティは正常に取得されましたが、すべてではありません。デバイスの取り外しなど、すべてのプロパティを取得できない理由は多数存在する点に注意してください。
VDS_E_PROVIDER_CACHE_CORRUPT
0x8004241FL
この戻り値は、アレイに関する情報をキャッシュするプロバイダー内部でソフトウェアまたは通信の問題が発生したことを示します。キャッシュを復元するには、IVdsHwProvider::Reenumerate メソッドを実行した後、IVdsHwProvider::Refresh メソッドを実行してください。
VDS_E_OBJECT_DELETED
0x8004240BL
コントローラーオブジェクトは既に存在しません。
vtbl 4 HRESULT GetSubSystem(IVdsSubSystem** ppSubSystem)

IVdsController::GetSubSystem メソッド (vdshwprv.h) は、コントローラーが属するサブシステムを返します。

ppSubSystemIVdsSubSystem**outIVdsSubSystem インターフェイスポインターのアドレス。呼び出し元はインターフェイスを解放する必要があります。

戻り値

このメソッドは、E_INVALIDARGE_OUTOFMEMORY などの標準的な HRESULT 値のほか、VDS 固有の戻り値を返すことがあります。また、HRESULT_FROM_WIN32 マクロを使用して変換されたシステムエラーコードを返す場合もあります。エラーは VDS 自体、または使用されている基盤の VDS プロバイダーから発生する可能性があります。戻り値には次のものが含まれます。

リターンコード/値 説明
VDS_E_PROVIDER_CACHE_CORRUPT
0x8004241FL
この戻り値は、アレイに関する情報をキャッシュするプロバイダー内部でソフトウェアまたは通信の問題が発生したことを示します。キャッシュを復元するには、IVdsHwProvider::Reenumerate メソッドを実行した後、IVdsHwProvider::Refresh メソッドを実行してください。
VDS_E_OBJECT_DELETED
0x8004240BL
コントローラーオブジェクトは既に存在しません。
vtbl 5 HRESULT GetPortProperties(SHORT sPortNumber, VDS_PORT_PROP* pPortProp)

IVdsController::GetPortProperties メソッド (vdshwprv.h) は、指定されたコントローラーポートのプロパティを返します。

sPortNumberSHORTinポートの番号。ポート番号は永続的です。ポートは 0 から番号付けされます。
pPortPropVDS_PORT_PROP*out呼び出し元が割り当てて渡す VDS_PORT_PROP 構造体のアドレス。VDS は、pwszFriendlyName および pwszIdentification メンバー文字列のためのメモリを割り当てます。呼び出し元は、CoTaskMemFree 関数を使用してこれらの文字列を解放する必要があります。

戻り値

このメソッドは、E_INVALIDARGE_OUTOFMEMORY などの標準的な HRESULT 値のほか、VDS 固有の戻り値を返すことがあります。また、HRESULT_FROM_WIN32 マクロを使用して変換されたシステムエラーコードを返す場合もあります。エラーは VDS 自体、または使用されている基盤の VDS プロバイダーから発生する可能性があります。戻り値には次のものが含まれます。

リターンコード/値 説明
VDS_E_PROVIDER_CACHE_CORRUPT
0x8004241FL
この戻り値は、アレイに関する情報をキャッシュするプロバイダー内部でソフトウェアまたは通信の問題が発生したことを示します。キャッシュを復元するには、IVdsHwProvider::Reenumerate メソッドを実行した後、IVdsHwProvider::Refresh メソッドを実行してください。
VDS_E_OBJECT_DELETED
0x8004240BL
コントローラーオブジェクトは既に存在しません。
VDS_E_NOT_SUPPORTED
0x80042400L
この操作、またはパラメーターの組み合わせは、このプロバイダーではサポートされていません。

解説(Remarks)

ポートの総数を取得するには、IVdsController::GetProperties メソッドを使用してください。

vtbl 6 HRESULT FlushCache()

IVdsController::FlushCache メソッド (vdshwprv.h) は、コントローラーのキャッシュを永続ストアにフラッシュします。

戻り値

このメソッドは、E_OUTOFMEMORY などの標準的な HRESULT 値のほか、VDS 固有の戻り値を返すことがあります。また、HRESULT_FROM_WIN32 マクロを使用して変換されたシステムエラーコードを返す場合もあります。エラーは VDS 自体、または使用されている基盤の VDS プロバイダーから発生する可能性があります。戻り値には次のものが含まれます。

リターンコード/値 説明
VDS_E_PROVIDER_CACHE_CORRUPT
0x8004241FL
この戻り値は、アレイに関する情報をキャッシュするプロバイダー内部でソフトウェアまたは通信の問題が発生したことを示します。キャッシュを復元するには、IVdsHwProvider::Reenumerate メソッドを実行した後、IVdsHwProvider::Refresh メソッドを実行してください。
VDS_E_OBJECT_DELETED
0x8004240BL
コントローラーオブジェクトは既に存在しません。
VDS_E_OBJECT_STATUS_FAILED
0x80042431L
コントローラーが失敗状態にあり、要求された操作を実行できません。
VDS_E_ANOTHER_CALL_IN_PROGRESS
0x80042404L
別の操作が進行中です。この操作は、先行する操作が完了するまで続行できません。
VDS_E_NOT_SUPPORTED
0x80042400L
この操作、またはパラメーターの組み合わせは、このプロバイダーではサポートされていません。
vtbl 7 HRESULT InvalidateCache()

IVdsController::InvalidateCache メソッド (vdshwprv.h) は、コントローラーのキャッシュを無効化します。

戻り値

このメソッドは、E_OUTOFMEMORY などの標準的な HRESULT 値のほか、VDS 固有の戻り値を返すことがあります。また、HRESULT_FROM_WIN32 マクロを使用して変換されたシステムエラーコードを返す場合もあります。エラーは VDS 自体、または使用されている基盤の VDS プロバイダーから発生する可能性があります。戻り値には次のものが含まれます。

リターンコード/値 説明
VDS_E_PROVIDER_CACHE_CORRUPT
0x8004241FL
この戻り値は、アレイに関する情報をキャッシュするプロバイダー内部でソフトウェアまたは通信の問題が発生したことを示します。キャッシュを復元するには、IVdsHwProvider::Reenumerate メソッドを実行した後、IVdsHwProvider::Refresh メソッドを実行してください。
VDS_E_OBJECT_DELETED
0x8004240BL
コントローラーオブジェクトは既に存在しません。
VDS_E_ANOTHER_CALL_IN_PROGRESS
0x80042404L
別の操作が進行中です。この操作は、先行する操作が完了するまで続行できません。
VDS_E_NOT_SUPPORTED
0x80042400L
この操作、またはパラメーターの組み合わせは、このプロバイダーではサポートされていません。
vtbl 8 HRESULT Reset()

IVdsController::Reset メソッド (vdshwprv.h) は、コントローラーを再初期化し、キャッシュを無効化します。

戻り値

このメソッドは、E_OUTOFMEMORY などの標準的な HRESULT 値のほか、VDS 固有の戻り値を返すことがあります。また、HRESULT_FROM_WIN32 マクロを使用して変換されたシステムエラーコードを返す場合もあります。エラーは VDS 自体、または使用されている基盤の VDS プロバイダーから発生する可能性があります。戻り値には次のものが含まれます。

リターンコード/値 説明
VDS_E_PROVIDER_CACHE_CORRUPT
0x8004241FL
この戻り値は、アレイに関する情報をキャッシュするプロバイダー内部でソフトウェアまたは通信の問題が発生したことを示します。キャッシュを復元するには、IVdsHwProvider::Reenumerate メソッドを実行した後、IVdsHwProvider::Refresh メソッドを実行してください。
VDS_E_OBJECT_DELETED
0x8004240BL
コントローラーオブジェクトは既に存在しません。
VDS_E_ANOTHER_CALL_IN_PROGRESS
0x80042404L
別の操作が進行中です。この操作は、先行する操作が完了するまで続行できません。
VDS_E_NOT_SUPPORTED
0x80042400L
この操作、またはパラメーターの組み合わせは、このプロバイダーではサポートされていません。
vtbl 9 HRESULT QueryAssociatedLuns(IEnumVdsObject** ppEnum)

IVdsController::QueryAssociatedLuns メソッド (vdshwprv.h) は、コントローラーが関連付けられている LUN の列挙を返します。

ppEnumIEnumVdsObject**outLUN を LUN オブジェクトとして列挙するために使用できる IEnumVdsObject インターフェイスポインターのアドレス。詳細については、列挙オブジェクトの操作を参照してください。呼び出し元は、インターフェイスおよび各 LUN オブジェクトが不要になったら、IUnknown::Release メソッドを呼び出して解放する必要があります。

戻り値

このメソッドは、E_INVALIDARGE_OUTOFMEMORY などの標準的な HRESULT 値のほか、VDS 固有の戻り値を返すことがあります。また、HRESULT_FROM_WIN32 マクロを使用して変換されたシステムエラーコードを返す場合もあります。エラーは VDS 自体、または使用されている基盤の VDS プロバイダーから発生する可能性があります。戻り値には次のものが含まれます。

リターンコード/値 説明
S_OK
関連付けられた LUN の列挙を返します。コントローラーに関連付けられた LUN がない場合、列挙は空になります。
VDS_E_PROVIDER_CACHE_CORRUPT
0x8004241FL
この戻り値は、アレイに関する情報をキャッシュするプロバイダー内部でソフトウェアまたは通信の問題が発生したことを示します。キャッシュを復元するには、IVdsHwProvider::Reenumerate メソッドを実行した後、IVdsHwProvider::Refresh メソッドを実行してください。
VDS_E_OBJECT_DELETED
0x8004240BL
コントローラーオブジェクトは既に存在しません。
VDS_E_OBJECT_STATUS_FAILED
0x80042431L
コントローラーが失敗状態にあり、要求された操作を実行できません。
VDS_E_NOT_SUPPORTED
0x80042400L
この操作、またはパラメーターの組み合わせは、このプロバイダーではサポートされていません。

解説(Remarks)

1 つの LUN に関連付けられたコントローラーを取得するには、IVdsLun::AssociateControllers メソッドを使用してください。

vtbl 10 HRESULT SetStatus(VDS_CONTROLLER_STATUS status)

IVdsController::SetStatus メソッド (vdshwprv.h) は、コントローラーの状態を指定された値に設定します。

statusVDS_CONTROLLER_STATUSinVDS_CONTROLLER_STATUS によって列挙される値。呼び出し元は、指定可能な列挙値のサブセットを渡すことができます。VDS_CS_UNKNOWN を渡すと E_INVALIDARG が返されます。

戻り値

このメソッドは、E_INVALIDARGE_OUTOFMEMORY などの標準的な HRESULT 値のほか、VDS 固有の戻り値を返すことがあります。また、HRESULT_FROM_WIN32 マクロを使用して変換されたシステムエラーコードを返す場合もあります。エラーは VDS 自体、または使用されている基盤の VDS プロバイダーから発生する可能性があります。戻り値には次のものが含まれます。

リターンコード/値 説明
VDS_E_PROVIDER_CACHE_CORRUPT
0x8004241FL
この戻り値は、アレイに関する情報をキャッシュするプロバイダー内部でソフトウェアまたは通信の問題が発生したことを示します。キャッシュを復元するには、IVdsHwProvider::Reenumerate メソッドを実行した後、IVdsHwProvider::Refresh メソッドを実行してください。
VDS_E_OBJECT_DELETED
0x8004240BL
コントローラーオブジェクトは既に存在しません。
VDS_E_OBJECT_STATUS_FAILED
0x80042431L
コントローラーが失敗状態にあり、要求された操作を実行できません。
VDS_E_ANOTHER_CALL_IN_PROGRESS
0x80042404L
別の操作が進行中です。この操作は、先行する操作が完了するまで続行できません。
VDS_E_NOT_SUPPORTED
0x80042400L
この操作、またはパラメーターの組み合わせは、このプロバイダーではサポートされていません。

解説(Remarks)

このメソッドを使用すると、単一のコントローラーの状態を設定できます。IVdsSubSystem::SetControllerStatus メソッドを呼び出すことで、サブシステム内のすべてのコントローラーの状態を一度に設定することもできます。コントローラーの現在の状態を取得するには、IVdsController::GetProperties メソッドを使用してください。

実装者は、状態を指定された状態にするために必要な操作を実行する責任があります。たとえば、呼び出し元がコントローラーの状態として VDS_CS_OFFLINE を渡した場合、まずコントローラーのキャッシュをクリアする必要がある場合があります。

出典・ライセンス: 上記「公式ドキュメント」の内容は Microsoft の Win32 API ドキュメント(MicrosoftDocs/sdk-api)を日本語に翻訳・改変したものです。© Microsoft Corporation. CC BY 4.0 で提供。
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 指定が可能。