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

IMbnSmsEvents

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

公式ドキュメント

この通知インターフェイスは、SMS 操作の完了状況やデバイスの SMS 状態の変化をアプリケーションに通知します。

解説(Remarks)

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

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

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

メソッド 7

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

vtbl 3 HRESULT OnSmsConfigurationChange(IMbnSms* sms)

SMS 構成が変更された、または利用可能になったことを示す通知メソッドです。

smsIMbnSms*inSMS 構成が利用可能になったモバイル ブロードバンド デバイスを表す IMbnSms インターフェイスへのポインターです。

戻り値

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

解説(Remarks)

アプリケーションは IMbnSms を使用して、新しい構成の詳細を取得できます。

vtbl 4 HRESULT OnSetSmsConfigurationComplete(IMbnSms* sms, DWORD requestID, HRESULT status)

SMS 構成の設定操作が完了したこと、または SMS サブシステムが初期化されて動作可能になったことを通知するメソッドです。

smsIMbnSms*inSMS 構成が更新されたモバイル ブロードバンド デバイスを表す IMbnSms インターフェイスへのポインターです。
requestIDDWORDin操作を識別するためにモバイル ブロードバンド サービスによって割り当てられたリクエスト ID です。
statusHRESULTin

操作の結果を示すステータス コードです。

呼び出し元のアプリケーションは、次のいずれかの値を受け取ることが想定されます。

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

戻り値

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

解説(Remarks)

このメソッドは、SMS 構成の設定操作の完了をアプリケーションに通知するために使用されます。アプリケーションは、渡された IMbnSms インターフェイスを使用して、新しい構成情報を取得できます。また、デバイスがその SMS サブシステムの準備完了を示すためにも使用されます。システム起動時やデバイス挿入時に、このメソッドが呼び出され、デバイスの SMS サブシステムが動作可能であることをアプリケーションに通知します。

vtbl 5 HRESULT OnSmsSendComplete(IMbnSms* sms, DWORD requestID, HRESULT status)

メッセージ送信操作の完了を示す通知メソッドです。

smsIMbnSms*in操作が完了したモバイル ブロードバンド デバイスを表す IMbnSms インターフェイスです。
requestIDDWORDin操作を識別するためにモバイル ブロードバンド サービスによって割り当てられたリクエスト ID です。
statusHRESULTin

操作の結果を示すステータス コードです。

呼び出し元のアプリケーションは、次のいずれかの値を受け取ることが想定されます。

意味
S_OK
操作は成功しました。
E_MBN_SIM_NOT_INSERTED
デバイスに SIM が挿入されていません。
E_MBN_BAD_SIM
デバイスに不正な SIM が挿入されています。
E_MBN_PIN_REQUIRED
操作を完了するには PIN が必要です。
HRESULT_FROM_WIN32(ERROR_NOT_SUPPORTED)
SMS 操作、またはその SMS 形式のいずれかがデバイスでサポートされていません。
E_MBN_SMS_MEMORY_FAILURE
SMS メモリ障害です。
E_MBN_SMS_UNKNOWN_SMSC_ADDRESS
SMS サービス センターのアドレスが不明または不完全です。
E_MBN_SERVICE_NOT_ACTIVATED
デバイスでセルラー サービスがアクティブ化されていません。
E_INVALIDARG
デバイスが送信リクエスト内に無効なパラメーターを検出しました。
E_MBN_SMS_NETWORK_TIMEOUT
ネットワーク タイムアウトが発生しました。
E_MBN_NOT_REGISTERED
デバイスがどのネットワークにも登録されていません。
E_MBN_SMS_LANG_NOT_SUPPORTED
CDMA デバイスがその言語をサポートしていません。
E_MBN_SMS_ENCODING_NOT_SUPPORTED
CDMA デバイスが要求されたエンコードをサポートしていません。
E_MBN_SMS_OPERATION_NOT_ALLOWED
要求された SMS 操作は SIM によって許可されていません。
E_MBN_SMS_MEMORY_FULL
デバイスまたは SIM のメモリが満杯です。

戻り値

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

解説(Remarks)

送信操作は、デバイスがネットワークへの登録に成功した後にのみ試みるべきです。

vtbl 6 HRESULT OnSmsReadComplete(IMbnSms* sms, MBN_SMS_FORMAT smsFormat, SAFEARRAY* readMsgs, VARIANT_BOOL moreMsgs, DWORD requestID, HRESULT status)

メッセージ読み取り操作の完了を示す通知メソッドです。

smsIMbnSms*in操作が完了したメッセージ ストアを表す IMbnSms インターフェイスです。
smsFormatMBN_SMS_FORMATinSMS メッセージの形式を定義する MBN_SMS_FORMAT 値です。
readMsgsSAFEARRAY*inデバイスから読み取られたメッセージの配列です。
moreMsgsVARIANT_BOOLin処理中のメッセージがまだ存在するかどうかを示すブール値です。これが TRUE の場合、メッセージがなくなり moreMsgsFALSE になるまで、OnSmsReadComplete が繰り返し呼び出されます。
requestIDDWORDinメッセージ読み取り操作を識別するためにモバイル ブロードバンド サービスによって割り当てられたリクエスト ID です。
statusHRESULTin

操作の結果を示すステータス コードです。

呼び出し元のアプリケーションは、次のいずれかの値を受け取ることが想定されます。

意味
S_OK
操作は成功しました。
E_MBN_SIM_NOT_INSERTED
デバイスに SIM が挿入されていません。
E_MBN_BAD_SIM
デバイスに不正な SIM が挿入されています。
E_MBN_PIN_REQUIRED
操作を完了するには PIN が必要です。
HRESULT_FROM_WIN32(ERROR_NOT_SUPPORTED)
SMS 操作、またはその SMS 形式のいずれかがデバイスでサポートされていません。
E_MBN_SMS_MEMORY_FAILURE
SMS メモリ障害です。
E_MBN_SMS_INVALID_MEMORY_INDEX
要求された値を持つメモリ インデックスが存在しません。
E_MBN_SMS_FILTER_NOT_SUPPORTED
デバイスが要求されたフィルターをサポートしていません。

戻り値

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

解説(Remarks)

GSM デバイスの場合、呼び出し元のアプリケーションは readMsgs の各要素に対して QueryInterface を呼び出し、IMbnSmsReadMsgPdu インターフェイスを取得する必要があります。

CDMA デバイスの場合、smsFormatMBN_SMS_FORMAT_TEXT であれば、アプリケーションは QueryInterface を呼び出して IMbnSmsReadMsgTextCdma インターフェイスを取得します。一方、smsFormatMBN_SMS_FORMAT_PDU であれば、アプリケーションは QueryInterface を呼び出して IMbnSmsReadMsgPdu インターフェイスを取得します。

読み取りリクエストによって大量のメッセージが読み取られる場合、moreMsgs が読み取るべきメッセージがもうないことを示すまで、OnSmsReadComplete が繰り返し呼び出されることがあります。

vtbl 7 HRESULT OnSmsNewClass0Message(IMbnSms* sms, MBN_SMS_FORMAT smsFormat, SAFEARRAY* readMsgs)

新しいクラス 0/フラッシュ メッセージの到着を通知するメソッドです。

smsIMbnSms*in新しいメッセージを受信したモバイル ブロードバンド デバイスを表す IMbnSms インターフェイスです。
smsFormatMBN_SMS_FORMATin新しい SMS メッセージの形式を定義する MBN_SMS_FORMAT 値です。
readMsgsSAFEARRAY*in新しいメッセージの配列です。

戻り値

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

解説(Remarks)

GSM デバイスの場合、呼び出し元のアプリケーションは readMsgs の各要素に対して QueryInterface を呼び出し、IMbnSmsReadMsgPdu インターフェイスを取得する必要があります。

CDMA デバイスの場合、smsFormatMBN_SMS_FORMAT_TEXT であれば、呼び出し元のアプリケーションは QueryInterface を呼び出して IMbnSmsReadMsgTextCdma インターフェイスを取得します。smsFormatMBN_SMS_FORMAT_PDU であれば、呼び出し元のアプリケーションは QueryInterface を呼び出して IMbnSmsReadMsgPdu インターフェイスを取得します。

vtbl 8 HRESULT OnSmsDeleteComplete(IMbnSms* sms, DWORD requestID, HRESULT status)

SMS 削除操作の完了を通知するメソッドです。

smsIMbnSms*inメッセージが削除されたモバイル ブロードバンド デバイスを表す IMbnSms インターフェイスです。
requestIDDWORDin操作を識別するためにモバイル ブロードバンド サービスによって割り当てられたリクエスト ID です。
statusHRESULTin

操作の結果を示すステータス コードです。

呼び出し元のアプリケーションは、次のいずれかの値を受け取ることが想定されます。

意味
S_OK
操作は成功しました。
E_MBN_SIM_NOT_INSERTED
デバイスに SIM が挿入されていません。
E_MBN_BAD_SIM
デバイスに不正な SIM が挿入されています。
E_MBN_PIN_REQUIRED
操作を完了するには PIN が必要です。
HRESULT_FROM_WIN32(ERROR_NOT_SUPPORTED)
SMS 操作、またはその SMS 形式のいずれかがデバイスでサポートされていません。
E_MBN_SMS_MEMORY_FAILURE
SMS メモリ障害です。
E_MBN_SMS_INVALID_MEMORY_INDEX
要求された値を持つメモリ インデックスが存在しません。
E_MBN_SMS_FILTER_NOT_SUPPORTED
デバイスが要求されたフィルターをサポートしていません。

戻り値

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

vtbl 9 HRESULT OnSmsStatusChange(IMbnSms* sms)

メッセージ ストアのステータスの変化を示す通知メソッドです。

smsIMbnSms*inメッセージ ストアのステータスが変化したモバイル ブロードバンド デバイスを表す IMbnSms インターフェイスです。

戻り値

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

解説(Remarks)

アプリケーションは IMbnSms インターフェイスを使用して、新しいステータス情報を取得できます。

出典・ライセンス: 上記「公式ドキュメント」の内容は 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_IMbnSmsEvents "{DCBBBAB6-2016-4BBB-AAEE-338E368AF6FA}"
#usecom global IMbnSmsEvents IID_IMbnSmsEvents "{}"
#comfunc global IMbnSmsEvents_OnSmsConfigurationChange       3 sptr
#comfunc global IMbnSmsEvents_OnSetSmsConfigurationComplete  4 sptr,int,int
#comfunc global IMbnSmsEvents_OnSmsSendComplete              5 sptr,int,int
#comfunc global IMbnSmsEvents_OnSmsReadComplete              6 sptr,int,var,int,int,int
#comfunc global IMbnSmsEvents_OnSmsNewClass0Message          7 sptr,int,var
#comfunc global IMbnSmsEvents_OnSmsDeleteComplete            8 sptr,int,int
#comfunc global IMbnSmsEvents_OnSmsStatusChange              9 sptr
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。
; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。
; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。