IVdsLunPlex
COM公式ドキュメント
IVdsLunPlex インターフェース (vdshwprv.h) は、LUN プレックスに対するクエリおよび構成操作を実行するためのメソッドを提供します。
メソッド 5
vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。
IVdsLunPlex::GetProperties (vdshwprv.h) メソッドは、LUN プレックスのプロパティを返します。
| pPlexProp | VDS_LUN_PLEX_PROP* | out | 呼び出し元が割り当てて渡す VDS_LUN_PLEX_PROP 構造体のアドレス。 |
戻り値
このメソッドは、E_INVALIDARG や E_OUTOFMEMORY などの標準的な HRESULT 値、および VDS 固有の戻り値を返すことがあります。また、HRESULT_FROM_WIN32 マクロを使用して変換されたシステムエラーコードを返すこともあります。エラーは、VDS 自体、または使用している基盤の VDS プロバイダーから発生する可能性があります。戻り値には次のものが含まれます。
| リターンコード/値 | 説明 |
|---|---|
|
一部のプロパティは正常に取得されましたが、すべてではありません。デバイスの取り外しなど、すべてのプロパティの取得に失敗する原因は数多く存在する点に注意してください。 |
|
この戻り値は、アレイに関する情報をキャッシュするプロバイダー内部のソフトウェアまたは通信の問題を示します。キャッシュを復元するには、IVdsHwProvider::Reenumerate メソッドを実行した後に IVdsHwProvider::Refresh メソッドを実行してください。 |
|
LUN プレックスは既に存在しません。 |
IVdsLunPlex::GetLun (vdshwprv.h) メソッドは、プレックスが属する LUN を返します。
| ppLun | IVdsLun** | out | IVdsLun インターフェースポインターのアドレス。呼び出し元はインターフェースを解放する必要があります。 |
戻り値
このメソッドは、E_INVALIDARG や E_OUTOFMEMORY などの標準的な HRESULT 値、および VDS 固有の戻り値を返すことがあります。また、HRESULT_FROM_WIN32 マクロを使用して変換されたシステムエラーコードを返すこともあります。エラーは、VDS 自体、または使用している基盤の VDS プロバイダーから発生する可能性があります。戻り値には次のものが含まれます。
| リターンコード/値 | 説明 |
|---|---|
|
この戻り値は、アレイに関する情報をキャッシュするプロバイダー内部のソフトウェアまたは通信の問題を示します。キャッシュを復元するには、IVdsHwProvider::Reenumerate メソッドを実行した後に IVdsHwProvider::Refresh メソッドを実行してください。 |
|
LUN プレックスは既に存在しません。 |
IVdsLunPlex::QueryExtents (vdshwprv.h) メソッドは、プレックスを構成するドライブエクステントの配列を返します。
| ppExtentArray | VDS_DRIVE_EXTENT** | out | 呼び出し元が渡す、ドライブエクステントへのポインターの配列を指すポインター。これらは、プレックスを構成するエクステントです。VDS_DRIVE_EXTENT 構造体を参照してください。呼び出し元は、 CoTaskMemFree 関数を使用してこの配列を解放する必要があります。 |
| plNumberOfExtents | INT* | out | ppExtentArray で返されるドライブエクステントの数を指すポインター。 |
戻り値
このメソッドは、E_INVALIDARG や E_OUTOFMEMORY などの標準的な HRESULT 値、および VDS 固有の戻り値を返すことがあります。また、HRESULT_FROM_WIN32 マクロを使用して変換されたシステムエラーコードを返すこともあります。エラーは、VDS 自体、または使用している基盤の VDS プロバイダーから発生する可能性があります。戻り値には次のものが含まれます。
| リターンコード/値 | 説明 |
|---|---|
|
この戻り値は、アレイに関する情報をキャッシュするプロバイダー内部のソフトウェアまたは通信の問題を示します。キャッシュを復元するには、IVdsHwProvider::Reenumerate メソッドを実行した後に IVdsHwProvider::Refresh メソッドを実行してください。 |
|
LUN プレックスは既に存在しません。 |
|
LUN プレックスは失敗状態にあり、要求された操作を実行できません。 |
|
別の操作が進行中です。この操作は、先行する 1 つ以上の操作が完了するまで続行できません。 |
解説(Remarks)
指定したドライブ上のエクステントを取得するには、IVdsDrive::QueryExtents メソッドを使用してください。
IVdsLunPlex::QueryHints (vdshwprv.h) メソッドは、現在 LUN プレックスに適用されているヒントを返します。
| pHints | VDS_HINTS* | out | 返されるプレックスのヒントを指すポインター。VDS_HINTS 構造体を参照してください。 |
戻り値
このメソッドは、E_INVALIDARG や E_OUTOFMEMORY などの標準的な HRESULT 値、および VDS 固有の戻り値を返すことがあります。また、HRESULT_FROM_WIN32 マクロを使用して変換されたシステムエラーコードを返すこともあります。エラーは、VDS 自体、または使用している基盤の VDS プロバイダーから発生する可能性があります。戻り値には次のものが含まれます。
| リターンコード/値 | 説明 |
|---|---|
|
この戻り値は、アレイに関する情報をキャッシュするプロバイダー内部のソフトウェアまたは通信の問題を示します。キャッシュを復元するには、IVdsHwProvider::Reenumerate メソッドを実行した後に IVdsHwProvider::Refresh メソッドを実行してください。 |
|
LUN プレックスオブジェクトは既に存在しません。 |
|
LUN プレックスは失敗状態にあり、要求された操作を実行できません。 |
|
別の操作が進行中です。この操作は、先行する 1 つ以上の操作が完了するまで続行できません。 |
|
この操作、またはパラメーターの組み合わせは、このプロバイダーではサポートされていません。 |
解説(Remarks)
呼び出し元は、LUN の作成時に IVdsSubSystem::CreateLun メソッドに pHints パラメーターを渡すことで、または IVdsLunPlex::ApplyHints メソッドを使用して既存のプレックスに新しいヒントのセットを適用することで、ヒントを指定できます。
IVdsLun::ApplyHints メソッドの呼び出しは、LUN を構成するプレックスに影響を与える可能性がある点に注意してください。LUN 全体のヒントを表示するには、IVdsLun::QueryHints メソッドを使用してください。
IVdsLunPlex::ApplyHints (vdshwprv.h) メソッドは、新しいヒントのセットを LUN プレックスに適用します。プレックスに適用されたヒントは、LUN にもその他のプレックスにも影響を与えません。
| pHints | VDS_HINTS* | in | LUN プレックスに適用するヒントを指すポインター。VDS_HINTS 構造体を参照してください。LUN プレックスに関連するフィールドのみを設定することが想定されており、関連しないフィールドは無視されます。 |
戻り値
このメソッドは、E_INVALIDARG や E_OUTOFMEMORY などの標準的な HRESULT 値、および VDS 固有の戻り値を返すことがあります。また、HRESULT_FROM_WIN32 マクロを使用して変換されたシステムエラーコードを返すこともあります。エラーは、VDS 自体、または使用している基盤の VDS プロバイダーから発生する可能性があります。戻り値には次のものが含まれます。
| リターンコード/値 | 説明 |
|---|---|
|
この戻り値は、アレイに関する情報をキャッシュするプロバイダー内部のソフトウェアまたは通信の問題を示します。キャッシュを復元するには、IVdsHwProvider::Reenumerate メソッドを実行した後に IVdsHwProvider::Refresh メソッドを実行してください。 |
|
LUN プレックスは既に存在しません。 |
|
LUN プレックスは失敗状態にあり、要求された操作を実行できません。 |
|
別の操作が進行中です。この操作は、先行する 1 つ以上の操作が完了するまで続行できません。 |
|
この操作、またはパラメーターの組み合わせは、このプロバイダーではサポートされていません。 |
解説(Remarks)
LUN プレックスの現在のヒントを取得するには、IVdsLunPlex::QueryHints メソッドを使用してください。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
HSP用 COM定義
#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"。
#define global IID_IVdsLunPlex "{0EE1A790-5D2E-4ABB-8C99-C481E8BE2138}" #usecom global IVdsLunPlex IID_IVdsLunPlex "{}" #comfunc global IVdsLunPlex_GetProperties 3 var #comfunc global IVdsLunPlex_GetLun 4 sptr #comfunc global IVdsLunPlex_QueryExtents 5 var,var #comfunc global IVdsLunPlex_QueryHints 6 var #comfunc global IVdsLunPlex_ApplyHints 7 var ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。#define global IID_IVdsLunPlex "{0EE1A790-5D2E-4ABB-8C99-C481E8BE2138}" #usecom global IVdsLunPlex IID_IVdsLunPlex "{}" #comfunc global IVdsLunPlex_GetProperties 3 sptr #comfunc global IVdsLunPlex_GetLun 4 sptr #comfunc global IVdsLunPlex_QueryExtents 5 sptr,sptr #comfunc global IVdsLunPlex_QueryHints 6 sptr #comfunc global IVdsLunPlex_ApplyHints 7 sptr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。