IMbnConnectionProfileManager
COM公式ドキュメント
接続プロファイルおよび接続通知へのアクセスを提供します。
解説(Remarks)
このインターフェイスは、次の通知インターフェイスへのアクセスに使用できます。
| 登録する通知シンク | IID |
|---|---|
| IMbnConnectionProfileManagerEvents | IID_IMbnConnectionProfileManagerEvents |
| MbnConnectionProfileEvents | IID_IMbnConnectionProfileEvents |
アプリケーションは、クラス ID に CLSID_IMbnConnectionProfileManager を指定して CoCreateInstance を呼び出すことで、このインターフェイスを取得できます。
通知を登録する手順は次のとおりです。
- IMbnConnectionProfileManager オブジェクトに対して QueryInterface を呼び出し、IConnectionPointContainer インターフェイスを取得します。
- 登録する各通知シンクについて、取得したインターフェイスに対して FindConnectionPoint を呼び出し、通知シンクに対応する IID を riid に渡します。
- 手順 2 で返された各接続ポイントについて、その接続ポイントに対して Advise を呼び出し、対応する通知インターフェイスを実装するオブジェクトの IUnknown インターフェイスへのポインターを pUnk に渡します。
COM 通知を登録するコードの例については、COM Connection Points の記事の Client セクションを参照してください。
メソッド 3
vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。
デバイスに関連付けられている接続プロファイルの一覧を取得します。
| mbnInterface | IMbnInterface* | in | プロファイル要求の対象となるデバイスを表す IMbnInterface。これが NULL の場合、この関数はシステムに存在するすべてのプロファイルを返します。 |
| connectionProfiles | SAFEARRAY** | out | デバイスで利用可能なすべての接続プロファイルを表す IMbnConnectionProfile インターフェイスの配列。このメソッドが S_OK 以外を返した場合、配列ポインターは NULL になります。それ以外の場合、呼び出し元アプリケーションは、最終的に SafeArrayDestroy を呼び出して割り当てられたメモリを解放する必要があります。 |
戻り値
このメソッドは次のいずれかの値を返します。
| リターン コード | 説明 |
|---|---|
| メソッドは正常に完了しました。 | |
| インターフェイスが無効です。多くの場合、モバイル ブロードバンド デバイスがシステムから取り外されたことが原因です。 | |
|
デバイスの準備ができていません。デバイスが MBN_READY_STATE_INITIALIZED ではないため、サブスクライバー ID を取得できません。 |
|
このシステムでモバイル ブロードバンド サービスが実行されていません。 |
解説(Remarks)
この操作が特定のデバイスに対して呼び出されると、デバイスが現在報告しているサブスクライバー ID と同じサブスクライバー ID を持つプロファイルの一覧が返されます。インターフェイスに関連付けられたサブスクライバー ID は、IMbnInterface の GetSubscriberInformation メソッドを使用して取得できます。
接続プロファイルは、デバイスのサブスクライバー ID に関連付けられます。GSM デバイスの場合、サブスクライバー ID は SIM の International Mobile Subscriber Identity (IMSI) です。CDMA デバイスの場合は、Mobile Identification Number (MIN) 文字列または International Roaming MIN (IRM) 文字列です。
指定したモバイル ブロードバンド デバイスに関連付けられている特定の接続プロファイルを取得します。
| mbnInterface | IMbnInterface* | in | プロファイル要求の対象となるデバイスを表す IMbnInterface。mbnInterface が NULL の場合、この関数はシステム内のいずれかのデバイスに関連付けられた、指定した名前のプロファイルを返します。 |
| profileName | LPWSTR | in | 接続プロファイルの名前を含む null 終端文字列。 |
| connectionProfile | IMbnConnectionProfile** | out | 目的の接続プロファイルを表す IMbnConnectionProfile インターフェイス。このメソッドが S_OK 以外を返した場合、これは NULL になります。 |
戻り値
このメソッドは次のいずれかの値を返します。
| リターン コード | 説明 |
|---|---|
| メソッドは正常に完了しました。 | |
| インターフェイスが無効です。多くの場合、モバイル ブロードバンド デバイスがシステムから取り外されたことが原因です。 | |
|
指定した名前のプロファイルは存在しません。 |
|
デバイスの準備ができていません。デバイスが MBN_READY_STATE_INITIALIZED ではないため、サブスクライバー ID を取得できません。 |
|
指定した名前のプロファイルは存在しません。 |
解説(Remarks)
接続プロファイルは、デバイスのサブスクライバー ID に関連付けられます。GSM デバイスの場合、サブスクライバー ID は SIM の International Mobile Subscriber Identity (IMSI) です。CDMA デバイスの場合は、Mobile Identification Number (MIN) 文字列または International Roaming MIN (IRM) 文字列です。
CreateConnectionProfile を使用して新しいプロファイルが作成された場合、呼び出し元は、その新しいプロファイルの名前を指定して GetConnectionProfile を呼び出す前に、OnConnectionProfileArrival イベントを受信するまで待機する必要があります。そうしないと、GetConnectionProfile API 呼び出しが HRESULT_FROM_WIN32(ERROR_NOT_FOUND) で失敗する可能性があります。
デバイス用の新しい接続プロファイルを作成します。
| xmlProfile | LPWSTR | in | Mobile Broadband Profile Schema Reference に準拠した XML 形式のプロファイル データを含む null 終端文字列。 |
戻り値
このメソッドは次のいずれかの値を返します。
| リターン コード | 説明 |
|---|---|
| メソッドは正常に完了しました。 | |
|
指定した名前のプロファイルは既に存在します。 |
| プロファイルがモバイル ブロードバンド プロファイル スキーマに準拠していません。 | |
|
プロファイルで渡されたアイコン ファイルの場所が無効か、アクセスできません。 |
| 呼び出し元アプリケーションが XML データで既定のプロファイル フラグを指定しましたが、モバイル ブロードバンド デバイスの既定のプロファイルは既に存在します。 |
解説(Remarks)
これは同期操作です。この関数呼び出しが成功すると、新しいプロファイルが作成され、モバイル ブロードバンド サービスは IMbnConnectionProfileManagerEvents インターフェイスの OnConnectionProfileArrival メソッドを呼び出します。
プロファイル データでアイコン ファイルの場所が指定されている場合、モバイル ブロードバンド サービスは指定された場所からアイコン ファイルを自身のストアにコピーします。その後、IMbnConnectionProfile オブジェクトに対してアイコン ファイルの場所を照会すると、モバイル ブロードバンド サービスがアイコン ファイルを格納したファイルの場所が返されます。プロファイルがシステムから削除されると、そのアイコン ファイルもシステムから削除されます。アイコン ファイルは、32x32 ピクセルのサイズの bmp ファイル形式である必要があります。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
HSP用 COM定義
#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"。
#define global IID_IMbnConnectionProfileManager "{DCBBBAB6-200F-4BBB-AAEE-338E368AF6FA}" #usecom global IMbnConnectionProfileManager IID_IMbnConnectionProfileManager "{BDFEE05A-4418-11DD-90ED-001C257CCFF1}" #comfunc global IMbnConnectionProfileManager_GetConnectionProfiles 3 sptr,var #comfunc global IMbnConnectionProfileManager_GetConnectionProfile 4 sptr,wstr,sptr #comfunc global IMbnConnectionProfileManager_CreateConnectionProfile 5 wstr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※#usecom 末尾は CoCreateInstance 用のクラスID(コクラスCLSID, SDKから自動取得)。 ; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。#define global IID_IMbnConnectionProfileManager "{DCBBBAB6-200F-4BBB-AAEE-338E368AF6FA}" #usecom global IMbnConnectionProfileManager IID_IMbnConnectionProfileManager "{BDFEE05A-4418-11DD-90ED-001C257CCFF1}" #comfunc global IMbnConnectionProfileManager_GetConnectionProfiles 3 sptr,sptr #comfunc global IMbnConnectionProfileManager_GetConnectionProfile 4 sptr,wstr,sptr #comfunc global IMbnConnectionProfileManager_CreateConnectionProfile 5 wstr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※#usecom 末尾は CoCreateInstance 用のクラスID(コクラスCLSID, SDKから自動取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。