Win32 API 日本語リファレンス
ホームNetworkManagement.MobileBroadband › IMbnInterfaceEvents

IMbnInterfaceEvents

COM
IIDdcbbbab6-2002-4bbb-aaee-338e368af6fa継承元IUnknown自前メソッド開始 vtbl3

公式ドキュメント

このインターフェイスは、非同期の IMbnInterface メソッド呼び出しや、デバイスの状態変化を処理するために使用される通知インターフェイスです。

解説(Remarks)

通知を登録する手順は次のとおりです。

  1. IMbnInterfaceManager オブジェクトに対して QueryInterface を呼び出して、IConnectionPointContainer インターフェイスを取得します。
  2. 返されたインターフェイスに対して FindConnectionPoint を呼び出し、riidIID_IMbnInterfaceEvents を渡します。
  3. 返された接続ポイントに対して Advise を呼び出し、IMbnInterfaceEvents を実装するオブジェクトの IUnknown インターフェイスへのポインターを pUnk に渡します。
手順 2 で返された接続ポイントに対して Unadvise を呼び出すことで、通知を終了できます。

COM 通知を登録するコード例については、COM Connection Points の記事の Client セクションを参照してください。

メソッド 8

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

vtbl 3 HRESULT OnInterfaceCapabilityAvailable(IMbnInterface* newInterface)

この通知メソッドは、インターフェイスの機能情報が利用可能になったことを示すために、モバイルブロードバンドサービスによって呼び出されます。

newInterfaceIMbnInterface*in機能情報が利用可能になった IMbnInterface

戻り値

このメソッドは S_OK を返す必要があります。

解説(Remarks)

アプリケーションは、渡された IMbnInterfaceGetInterfaceCapability メソッドを実行して、利用可能な機能情報を取得できます。インターフェイス機能の一覧については、MBN_INTERFACE_CAPS を参照してください。

vtbl 4 HRESULT OnSubscriberInformationChange(IMbnInterface* newInterface)

この通知メソッドは、デバイスの加入者情報が変更されたことを示すために、モバイルブロードバンドサービスによって呼び出されます。

newInterfaceIMbnInterface*in加入者情報が変更されたデバイスを表す IMbnInterface

戻り値

このメソッドは S_OK を返す必要があります。

解説(Remarks)

アプリケーションは、渡された IMbnInterfaceGetSubscriberInformation メソッドを呼び出して、新しい加入者情報を取得できます。

vtbl 5 HRESULT OnReadyStateChange(IMbnInterface* newInterface)

この通知メソッドは、インターフェイスのレディ状態の変化を示すために、モバイルブロードバンドサービスによって呼び出されます。

newInterfaceIMbnInterface*inレディ状態が変更されたモバイルブロードバンドデバイスを表す IMbnInterface

戻り値

このメソッドは S_OK を返す必要があります。

解説(Remarks)

アプリケーションは、渡された IMbnInterfaceGetReadyState メソッドを呼び出して、デバイスの最新のレディ状態を取得できます。レディ状態の一覧については、MBN_READY_STATE を参照してください。

vtbl 6 HRESULT OnEmergencyModeChange(IMbnInterface* newInterface)

この通知メソッドは、緊急モードが変更されたことを示すために、モバイルブロードバンドサービスによって呼び出されます。

newInterfaceIMbnInterface*in緊急モードが変更されたデバイスを表す IMbnInterface

戻り値

このメソッドは S_OK を返す必要があります。

解説(Remarks)

アプリケーションは、渡された IMbnInterfaceInEmergencyMode メソッドを呼び出して、デバイスの新しい緊急モードを取得できます。

vtbl 7 HRESULT OnHomeProviderAvailable(IMbnInterface* newInterface)

この通知メソッドは、デバイスのホームプロバイダー情報が利用可能になったことを示すために、モバイルブロードバンドサービスによって呼び出されます。

newInterfaceIMbnInterface*inホームプロバイダー情報が利用可能になったデバイスを表す IMbnInterface

戻り値

このメソッドは S_OK を返す必要があります。

解説(Remarks)

アプリケーションは、渡された IMbnInterfaceGetHomeProvider メソッドを呼び出して、利用可能なホームプロバイダー情報を取得できます。

vtbl 8 HRESULT OnPreferredProvidersChange(IMbnInterface* newInterface)

この通知メソッドは、デバイスの優先プロバイダーリストの変化を示すために、モバイルブロードバンドサービスによって呼び出されます。

newInterfaceIMbnInterface*in優先プロバイダーリストが変更されたモバイルブロードバンドデバイスを表す IMbnInterface

戻り値

このメソッドは S_OK を返す必要があります。

解説(Remarks)

場合によっては、デバイスの優先プロバイダーリストが、SMS や OTA (Over The Air) 更新によってネットワークから更新されることがあります。モバイルブロードバンドサービスは、優先プロバイダーリストに変更があった場合、このメソッドを呼び出してアプリケーションに通知します。アプリケーションは、渡された IMbnInterfaceGetPreferredProviders メソッドを呼び出して、更新された優先プロバイダーリストを取得できます。

IMbnInterfaceSetPreferredProviders メソッドの呼び出しによって優先プロバイダーリストが変更された場合、この通知は呼び出されません。

vtbl 9 HRESULT OnSetPreferredProvidersComplete(IMbnInterface* newInterface, DWORD requestID, HRESULT status)

この通知メソッドは、SetPreferredProviders 操作の完了を示すために、モバイルブロードバンドサービスによって呼び出されます。

newInterfaceIMbnInterface*inこの操作が実行されたデバイスを表す IMbnInterface
requestIDDWORDinこの非同期操作に対してモバイルブロードバンドサービスによって割り当てられたリクエスト ID。
statusHRESULTin

操作の完了ステータス。

このステータスの有効な値を次の表に示します。

意味
S_OK
操作は成功しました。
E_MBN_PIN_REQUIRED
この操作を完了するには、デバイスに PIN の入力が必要です。
E_MBN_SIM_NOT_INSERTED
SIM が挿入されていません。
E_MBN_BAD_SIM
デバイスに不正な SIM が挿入されています。
HRESULT_FROM_WIN32(ERROR_NOT_SUPPORTED)
デバイスはこの操作をサポートしていません。

戻り値

このメソッドは S_OK を返す必要があります。

解説(Remarks)

操作が正常に完了した場合、つまり statusS_OK の場合、アプリケーションは、渡された IMbnInterfaceGetPreferredProviders メソッドを呼び出して、更新された優先プロバイダーリストを取得できます。

複数のアプリケーションが通知を登録している場合、このメソッドは登録されているすべてのアプリケーションで呼び出されます。つまり、更新操作を開始していないアプリケーションも通知を受け取ります。

IMbnInterfaceSetPreferredProviders メソッドの呼び出しによって優先プロバイダーリストが変更された場合、IMbnInterfaceEventsOnPreferredProvidersChange メソッドは呼び出されません。

vtbl 10 HRESULT OnScanNetworkComplete(IMbnInterface* newInterface, DWORD requestID, HRESULT status)

この通知メソッドは、ネットワークスキャンの完了を示すために、モバイルブロードバンドサービスによって呼び出されます。

newInterfaceIMbnInterface*inこの操作が実行されたデバイスを表す IMbnInterface
requestIDDWORDinこの通知に対してモバイルブロードバンドサービスによって割り当てられたリクエスト ID。
statusHRESULTin

操作の完了ステータス。

呼び出し側のアプリケーションは、次のいずれかの値を想定できます。

S_OK

操作は成功しました。

E_MBN_RADIO_POWER_OFF

デバイスの無線がオフになっているため、可視ネットワークリストを取得できません。アプリケーションは、無線がオンになった通知を受け取ったときに、ネットワークスキャンリクエストを発行できます。

E_MBN_DEVICE_BUSY

デバイスがビジー状態のため、現在ネットワークスキャン操作を実行できません。これは、データ接続が確立されているときにネットワークスキャン操作をサポートしないデバイスによって返されます。

E_MBN_ALREADY_ACTIVE

ネットワークスキャン操作はすでに進行中です。

戻り値

このメソッドは S_OK を返す必要があります。

解説(Remarks)

操作が正常に完了した場合、つまり statusS_OK の場合、モバイルブロードバンドサービスはキャッシュされた可視プロバイダーリストの更新に成功しています。その後、アプリケーションは、渡された IMbnInterfaceGetVisibleProviders メソッドを呼び出して、可視プロバイダーリストを取得できます。

複数のアプリケーションが通知を登録している場合、このメソッドは登録されているすべてのアプリケーションで呼び出されます。つまり、更新操作を開始していないアプリケーションも通知を受け取ります。

出典・ライセンス: 上記「公式ドキュメント」の内容は 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_IMbnInterfaceEvents "{DCBBBAB6-2002-4BBB-AAEE-338E368AF6FA}"
#usecom global IMbnInterfaceEvents IID_IMbnInterfaceEvents "{}"
#comfunc global IMbnInterfaceEvents_OnInterfaceCapabilityAvailable   3 sptr
#comfunc global IMbnInterfaceEvents_OnSubscriberInformationChange    4 sptr
#comfunc global IMbnInterfaceEvents_OnReadyStateChange               5 sptr
#comfunc global IMbnInterfaceEvents_OnEmergencyModeChange            6 sptr
#comfunc global IMbnInterfaceEvents_OnHomeProviderAvailable          7 sptr
#comfunc global IMbnInterfaceEvents_OnPreferredProvidersChange       8 sptr
#comfunc global IMbnInterfaceEvents_OnSetPreferredProvidersComplete  9 sptr,int,int
#comfunc global IMbnInterfaceEvents_OnScanNetworkComplete            10 sptr,int,int
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。
; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。