IMbnPinManager
COM公式ドキュメント
デバイスの PIN に関する重要な詳細を提供します。
解説(Remarks)
アプリケーションは、IMbnInterface の QueryInterface メソッドを呼び出すことで、このインターフェイスを取得できます。
メソッド 3
vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。
デバイスがサポートするさまざまな PIN の種類の一覧を取得します。
| pinList | SAFEARRAY** | out | デバイスがサポートする PIN の種類を表す MBN_PIN_TYPE 値の一覧へのポインター。GetPinList が S_OK 以外を返す場合、pinList は NULL になります。それ以外の場合、呼び出し側アプリケーションは SafeArrayDestroy を呼び出して、割り当てられたメモリを解放する必要があります。 |
戻り値
このメソッドは、次のいずれかの値を返すことがあります。
| 戻り値 | 説明 |
|---|---|
| メソッドは正常に完了しました。 | |
| PIN の種類が利用できません。モバイル ブロードバンド サービスが、情報を取得するためにデバイスを現在調べています。PIN の種類が利用可能になると、モバイル ブロードバンド サービスは OnPinListAvailable メソッド(IMbnPinManagerEvents)を呼び出します。 | |
| この操作を行うには、デバイスで PIN の入力が必要です。 | |
| SIM が挿入されていません。 | |
| 不正な SIM がデバイスに挿入されています。 |
解説(Remarks)
回復可能なエラー E_MBN_PIN_REQUIRED、E_MBN_SIM_NOT_INSERTED、E_MBN_BAD_SIM の場合、モバイル ブロードバンド サービスは、エラー状態が解消された時点でこの情報をデバイスから取得しようとします。この情報を取得している間、GetPinList の呼び出しは E_PENDING を返します。取得操作が完了すると、モバイル ブロードバンド サービスは IMbnPinManagerEvents の OnPinListAvailable メソッドを呼び出します。
特定の種類の PIN を取得します。
| pinType | MBN_PIN_TYPE | in | 要求された PIN の種類を表す MBN_PIN_TYPE 値。 |
| pin | IMbnPin** | out | 要求された PIN の種類に対応する IMbnPin のアドレスへのポインター。このメソッドが S_OK 以外の値を返す場合、このパラメーターは NULL になります。それ以外の場合、呼び出し側アプリケーションは、このインターフェイスの使用が終わったら解放する必要があります。 |
戻り値
このメソッドは、次のいずれかの値を返すことがあります。
| 戻り値 | 説明 |
|---|---|
| メソッドは正常に完了しました。 | |
| PIN の種類が利用できません。モバイル ブロードバンド サービスが、この情報を取得するためにデバイスを現在調べています。PIN の種類が利用可能になると、モバイル ブロードバンド サービスは IMbnPinManagerEvents の OnPinListAvailable メソッドを呼び出します。 | |
| 操作を完了するには PIN が必要です。呼び出し側アプリケーションは、デバイスの PIN ロックが解除されたときにこの操作を再試行できます。 | |
| デバイスに SIM がありません。 | |
| デバイスに不正な SIM があります。 | |
|
要求された PIN の種類は、デバイスでサポートされていません。 |
デバイスの現在の PIN 状態を取得します。
| requestID | DWORD* | out | この非同期要求に対してモバイル ブロードバンド サービスが設定する要求 ID へのポインター。応答には同じ要求 ID が含まれます。 |
戻り値
このメソッドは、次のいずれかの値を返すことがあります。
| 戻り値 | 説明 |
|---|---|
| メソッドは正常に完了しました。 | |
|
このシステムでモバイル ブロードバンド サービスが実行されていません。 |
| インターフェイスが無効です。多くの場合、モバイル ブロードバンド デバイスがシステムから取り外されたことが原因です。 | |
|
インターフェイスが無効です。多くの場合、モバイル ブロードバンド デバイスがシステムから取り外されています。 |
解説(Remarks)
GetPinState メソッドは、デバイスの PIN 状態を求める非同期要求を開始します。PIN 状態は、要求された操作を完了するために PIN の入力が必要かどうかを示します。また、デバイスが想定している PIN の種類に関する情報も含まれ、オプションで、有効な PIN を入力するための残り試行回数を提供します。
このメソッドは常にデバイスの現在の PIN 状態を返します。このオブジェクトが作成された時点の PIN 状態をキャッシュすることはありません。代わりに、常にデバイスに問い合わせ、デバイスの現在の PIN 状態を返します。
これは非同期操作であるため、GetPinState は直ちに戻ります。操作が完了すると、モバイル ブロードバンド サービスは IMbnPinManagerEvents の OnGetPinStateComplete メソッドを呼び出します。
操作が E_MBN_PIN_REQUIRED を返した場合、またはデバイスが報告する準備完了状態が MBN_READY_STATE_DEVICE_LOCKED である場合は常に、アプリケーションはこのメソッドを使用して、デバイスまたは SIM のロック解除に必要な PIN の種類を照会する必要があります。
この操作の進行中にモバイル ブロードバンド デバイスがシステムから取り外された場合、IMbnPinManagerEvents の OnGetPinStateComplete メソッドの呼び出しは保証されません。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
HSP用 COM定義
#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"。
#define global IID_IMbnPinManager "{DCBBBAB6-2005-4BBB-AAEE-338E368AF6FA}" #usecom global IMbnPinManager IID_IMbnPinManager "{}" #comfunc global IMbnPinManager_GetPinList 3 var #comfunc global IMbnPinManager_GetPin 4 int,sptr #comfunc global IMbnPinManager_GetPinState 5 var ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。#define global IID_IMbnPinManager "{DCBBBAB6-2005-4BBB-AAEE-338E368AF6FA}" #usecom global IMbnPinManager IID_IMbnPinManager "{}" #comfunc global IMbnPinManager_GetPinList 3 sptr #comfunc global IMbnPinManager_GetPin 4 int,sptr #comfunc global IMbnPinManager_GetPinState 5 sptr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。