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

IVdsAdmin

COM
IIDd188e97d-85aa-4d33-abc6-26299a10ffc1継承元IUnknown自前メソッド開始 vtbl3

公式ドキュメント

VDS にプロバイダーを登録します。

メソッド 2

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

vtbl 3 HRESULT RegisterProvider(GUID providerId, GUID providerClsid, LPWSTR pwszName, VDS_PROVIDER_TYPE type, LPWSTR pwszMachineName, LPWSTR pwszVersion, GUID guidVersionId)

指定されたハードウェアプロバイダーを VDS に登録します。ハードウェアプロバイダーがこのメソッドを呼び出します。

providerIdGUIDinハードウェアプロバイダーの GUID。
providerClsidGUIDinハードウェアプロバイダーの COM クラス識別子 (Clsid)。
pwszNameLPWSTRinハードウェアプロバイダーの名前。ゼロ終端の人間が読める文字列。
typeVDS_PROVIDER_TYPEinVDS_PROVIDER_TYPE によって列挙されるプロバイダーの種類。 ハードウェアプロバイダーを VDS に登録するには VDS_PT_HARDWARE 値を使用します。
pwszMachineNameLPWSTRinoptionalハードウェアプロバイダーが実行されるコンピューターの名前。null 終端の人間が読める文字列。 現在のコンピューターを参照するには NULL を使用します。
pwszVersionLPWSTRinプロバイダーのバージョン。ゼロ終端の人間が読める文字列。
guidVersionIdGUIDinこのバージョンのプロバイダーの GUID。

戻り値

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

戻り値/値 説明
VDS_E_ALREADY_REGISTERED
0x80042403L
providerId は既に登録されています。プロバイダーは、任意の時点で 1 つのバージョンのみを登録できます。

解説(Remarks)

必要に応じて、新しいバージョンを登録する前に UnregisterProvider を呼び出してプロバイダーを削除してください。

インプロセスプロバイダーは DllRegisterServer からこのメソッドを呼び出します。一方、アウトオブプロセスプロバイダーは WinMain 関数から呼び出します。

ハードウェアプロバイダーは、VDS の実行中に停止してはなりません。

vtbl 4 HRESULT UnregisterProvider(GUID providerId)

VDS プロバイダーの登録データを削除します。ハードウェアプロバイダーがこのメソッドを呼び出します。

providerIdGUIDinプロバイダーの GUID。

戻り値

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

解説(Remarks)

インプロセスプロバイダーは DllRegisterServer 関数からこのメソッドを呼び出します。一方、アウトオブプロセスプロバイダーは WinMain 関数から呼び出します。

出典・ライセンス: 上記「公式ドキュメント」の内容は 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_IVdsAdmin "{D188E97D-85AA-4D33-ABC6-26299A10FFC1}"
#usecom global IVdsAdmin IID_IVdsAdmin "{}"
#comfunc global IVdsAdmin_RegisterProvider    3 int,int,wstr,int,wstr,wstr,int
#comfunc global IVdsAdmin_UnregisterProvider  4 int
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。