phoneInitializeExA 関数 (tapi.h)
phoneInitializeEx 関数は、電話の抽象化を後で使用するために、アプリケーションによる TAPI の使用を初期化します。 アプリケーションの指定された通知メカニズムを登録し、アプリケーションで使用できる電話デバイスの数を返します。 電話デバイスは、テレフォニー API の電話プレフィックス付き関数の実装を提供する任意のデバイスです。
構文
LONG phoneInitializeExA(
LPHPHONEAPP lphPhoneApp,
HINSTANCE hInstance,
PHONECALLBACK lpfnCallback,
LPCSTR lpszFriendlyAppName,
LPDWORD lpdwNumDevs,
LPDWORD lpdwAPIVersion,
LPPHONEINITIALIZEEXPARAMS lpPhoneInitializeExParams
);
パラメーター
lphPhoneApp
TAPI のアプリケーションの使用法ハンドルが格納されている場所へのポインター。
hInstance
クライアント アプリケーションまたは DLL のインスタンス ハンドル。 アプリケーションまたは DLL は、このパラメーター NULL を渡すことができます。この場合、TAPI はプロセスのルート実行可能ファイルのモジュール ハンドルを使用します。
lpfnCallback
アプリケーションがイベント通知の "非表示ウィンドウ" メソッドを使用している場合に、ライン デバイス、アドレス、または呼び出しの状態とイベントを決定するために呼び出されるコールバック関数のアドレス (詳細については、phoneCallbackFunc
lpszFriendlyAppName
表示可能な文字のみを含む -terminated 文字列、
lpdwNumDevs
DWORDへのポインター。 この要求が正常に完了すると、この場所には、アプリケーションで使用できる電話デバイスの数が入力されます。
lpdwAPIVersion
DWORDへのポインター。 アプリケーションは、この関数を呼び出す前に、この
lpPhoneInitializeExParams
PHONEINITIALIZEEXPARAMS 型の構造体へのポインター、アプリケーションと TAPI の間の関連付けを確立するために使用される追加のパラメーター (具体的には、アプリケーションの選択したイベント通知メカニズムと関連するパラメーター) を含みます。
戻り値
要求が成功した場合は 0 を返し、エラーが発生した場合は負のエラー番号を返します。 可能な戻り値は次のとおりです。
PHONEERR_INVALAPPNAME、PHONEERR_OPERATIONFAILED、PHONEERR_INIFILECORRUPT、PHONEERR_INVALPOINTER、PHONEERR_REINIT、PHONEERR_NOMEM、PHONEERR_INVALPARAM。
備考
アプリケーションでは、TAPI がテレフォニー イベントをアプリケーションに通知する 3 つのメカニズム (非表示ウィンドウ、イベント ハンドル、または完了ポート) のいずれかを選択する必要があります。
-
非表示ウィンドウ メカニズムは、PHONEINITIALIZEEXPARAMS 構造体の dwOptions メンバーのPHONEINITIALIZEEXOPTION_USEHIDDENWINDOWを指定することによって選択されます。 このメカニズム (TAPI バージョン 1 で使用できる唯一のメカニズムです。x アプリケーション) では、TAPI は、phoneInitializeEx 関数中にアプリケーションのコンテキストでウィンドウを作成し、そのウィンドウに投稿されたすべてのメッセージが TAPI 自体の WNDPROC によって処理されるようにウィンドウをサブクラス化します。 TAPI にアプリケーションに配信するメッセージがある場合、TAPI は非表示ウィンドウにメッセージを投稿します。 メッセージが受信されると (アプリケーションが Windows GetMessage 関数を呼び出した場合にのみ発生する可能性があります)、Windows はプロセス コンテキストをアプリケーションのコンテキストに切り替え、TAPI で WNDPROC を呼び出します。 TAPI は、
phoneCallbackFunc を呼び出してメッセージを配信します。これは、アプリケーションが phoneInitializeEx (または TAPI バージョン 1.3 および 1.4 アプリケーションの場合は phoneInitialize をする呼び出しでパラメーターとして指定したポインター) を呼び出します。 このメカニズムでは、アプリケーションにメッセージ キュー (サービス プロセスには望ましくありません) を用意し、テレフォニー イベントの処理の遅延を回避するために、そのキューに定期的にサービスを提供する必要があります。 非表示ウィンドウは、phoneShutdown 関数中に TAPI によって破棄されます。 -
イベント ハンドル メカニズムは、PHONEINITIALIZEEXPARAMS 構造体の dwOptions メンバーにPHONEINITIALIZEEXOPTION_USEEVENTを指定することによって選択されます。 このメカニズムでは、TAPI はアプリケーションに代わってイベント オブジェクトを作成し、PHONEINITIALIZEEXPARAMS内の
hEvent メンバーのオブジェクトハンドルを返します。 アプリケーションは、どのような方法 (たとえば、SetEvent、 ResetEvent 、CloseHandle など) や未定義の動作の結果呼び出してはなりません。アプリケーションは、 WaitForSingleObject や msgWaitForMultipleObjectsなどの関数を使用してのみ、このイベントを待機できます。 TAPI は、テレフォニー イベント通知がアプリケーションに対して保留中の場合に、このイベントを通知します。アプリケーションは、phoneGetMessage を呼び出して、メッセージの内容をフェッチする必要があります。 イベントが保留中でない場合、TAPI によってイベントがリセットされます。 イベント ハンドルが閉じられ、phoneShutdown 関数中に TAPI によって破棄されたイベント オブジェクト。 アプリケーションは、作成されたイベント ハンドルを待機する必要はありません。アプリケーションは、代わりに phoneGetMessage 呼び出し、メッセージのキューへの待機をブロックするように選択できます。 -
完了ポート メカニズムは、PHONEINITIALIZEEXPARAMS 構造体の dwOptions メンバーでポートPHONEINITIALIZEEXOPTION_USECOMPLETION指定することによって選択されます。 このメカニズムでは、テレフォニー イベントをアプリケーションに送信する必要がある場合は常に、 TAPI は、PostQueuedCompletionStatus を使用して、hCompletionPort メンバーで指定されたアプリケーションが、PHONEINITIALIZEEXPARAMSで指定された完了キーでタグ付けされた完了ポート dwCompletionKey メンバー PHONEINITIALIZEEXPARAMSに送信します。 アプリケーションは、CreateIoCompletionPortを使用して完了ポートを作成しておく必要があります。 アプリケーションは、GetQueuedCompletionStatus
を使用してイベントを取得します。 GetQueuedCompletionStatus から戻ると、アプリケーションは、指定された dwCompletionKey を、lpCompletionKey パラメーターによって指DWORD に書き込まれ、lpOverlappedが指す位置 返された PHONEMESSAGE 構造体へのポインターを持ちます。 アプリケーションがイベントを処理した後、アプリケーションは LocalFree呼び出して、 PHONEMESSAGE 構造体を格納するために使用されるメモリを解放する必要があります。 アプリケーションが完了ポートを作成したため (これにより、他の目的で共有できるようにする)、アプリケーションはそれを閉じる必要があります。アプリケーションは、phoneShutdown呼び出すまで完了ポートを閉じてはなりません。
PHONEERR_REINITが返され、TAPI の再初期化が要求された場合 (テレフォニー サービス プロバイダーの追加や削除の結果など)、最後のアプリケーションが API の使用をシャットダウンするまで 、phoneInitializeEx 要求
PHONEERR_INVALPARAMエラー値が返された場合、指定された hInstance パラメーターは無効です。
アプリケーションは、0 から dwNumDevs - 1 までの範囲の電話デバイス識別子を使用して、個々の電話デバイスを参照できます。 アプリケーションでは、最初に phoneGetDevCapsを
手記
tapi.h ヘッダーは、unicode プリプロセッサ定数の定義に基づいて、この関数の ANSI または Unicode バージョンを自動的に選択するエイリアスとして phoneInitializeEx を定義します。 エンコードに依存しないエイリアスをエンコードに依存しないコードと組み合わせて使用すると、コンパイルエラーやランタイム エラーが発生する不一致が発生する可能性があります。 詳細については、「関数プロトタイプの 規則」を参照してください。
必要条件
要件 | 価値 |
---|---|
ターゲット プラットフォーム の |
ウィンドウズ |
ヘッダー | tapi.h |
ライブラリ | Tapi32.lib |
DLL | Tapi32.dll |
関連項目
PHONEINITIALIZEEXPARAMS を
PHONEMESSAGE を
phoneCallbackFunc を
phoneGetDevCaps を
phoneGetMessage を
phoneNegotiateAPIVersion を
phoneShutdown を