TSPI_providerInit関数 (tspi.h)

TSPI_providerInit関数は、サービス プロバイダーを初期化し、後続の操作に必要なパラメーターを指定します。

構文

LONG TSPIAPI TSPI_providerInit(
  DWORD            dwTSPIVersion,
  DWORD            dwPermanentProviderID,
  DWORD            dwLineDeviceIDBase,
  DWORD            dwPhoneDeviceIDBase,
  DWORD_PTR        dwNumLines,
  DWORD_PTR        dwNumPhones,
  ASYNC_COMPLETION lpfnCompletionProc,
  LPDWORD          lpdwTSPIOptions
);

パラメーター

dwTSPIVersion

この関数が動作する必要がある TSPI 定義のバージョン。 呼び出し元は、特別な dwDeviceIDINITIALIZE_NEGOTIATIONでTSPI_lineNegotiateTSPIVersionを使用して、サービス プロバイダーが受け入れられることが保証されているバージョンをネゴシエートできます。

dwPermanentProviderID

初期化されるサービス プロバイダーの、このシステム上のサービス プロバイダー内で一意の永続的な識別子。

dwLineDeviceIDBase

このサービス プロバイダーでサポートされている回線デバイスの最も低いデバイス識別子。

dwPhoneDeviceIDBase

このサービス プロバイダーでサポートされている電話デバイスの最も低いデバイス識別子。

dwNumLines

このサービス プロバイダーがサポートする回線デバイスの数。 返される値は、 TSPI_providerEnumDevicesで報告された回線デバイスの数です。

dwNumPhones

このサービス プロバイダーがサポートする電話デバイスの数。 返される値は、 TSPI_providerEnumDevicesで報告された電話デバイスの数です。

lpfnCompletionProc

サービス プロバイダーが呼び出すプロシージャは、回線および電話デバイス上のすべての非同期操作プロシージャの完了を報告します。

lpdwTSPIOptions

サービス プロバイダーが値を指定する値を書き込むことができる DWORD サイズのメモリ位置へのポインター LINETSPIOPTIONS_。 このパラメーターを使用すると、サービス プロバイダーは TAPI に必要なオプションの動作を示すビットを返すことができます。 TAPI は、TSPI_providerInitを呼び出す前にオプション DWORD を 0 に設定するため、サービス プロバイダーがこれらのオプションを必要としない場合は、DWORD を 0 のままにすることができます。

現時点では、このポインターを介して返されるビットが 1 つだけ定義されています: LINETSPIOPTION_NONREENTRANT。 サービス プロバイダーは、完全なプリエンプティブ、マルチスレッド、マルチタスク、マルチプロセッサ操作 (ミューテックスによって保護されたグローバル データの更新など) 用に設計されていない場合に、このビットを設定します。 このビットが設定されている場合、TAPI はサービス プロバイダーに対して一度に 1 つの呼び出しのみを行います。サービス プロバイダーが元の関数呼び出しから戻るまで、他のエントリ ポイントもそのエントリ ポイントも呼び出しません。 このビットが設定されていない場合、TAPI は、同じエントリ ポイントへの複数回を含む複数のサービス プロバイダー エントリ ポイントを同時に呼び出すことができます (実際にはマルチプロセッサ システムで同時に)。

注 重要: このビットを設定するとパフォーマンスが低下することを強調する必要があります。 これは開発にのみ使用することを強くお勧めしますが、出荷された運用サービス プロバイダーには使用しないことを強くお勧めします。
 
TAPI は、他の TSPI 関数の呼び出しをブロックしないように、ダイアログ ボックス ( TUISPI_lineConfigDialogTUISPI_lineConfigDialogEditTUISPI_phoneConfigDialogTUISPI_providerConfigTUISPI_providerInstallTUISPI_providerRemove) を表示する TSPI 関数へのアクセスをシリアル化しません。サービス プロバイダーは、これらの機能に内部保護を含める必要があります。

戻り値

関数が成功した場合は 0 を返し、エラーが発生した場合はエラー番号を返します。 可能な戻り値は次のとおりです。

LINEERR_INCOMPATIBLEAPIVERSION、LINEERR_OPERATIONFAILED、LINEERR_NOMEM、LINEERR_RESOURCEUNAVAIL、LINEERR_INIFILECORRUPT、LINEERR_NOMULTIPLEINSTANCE。

解説

この関数は、TSPI_lineNegotiateTSPIVersionを除き、 TSPI_line または TSPI_phone でプレフィックスが付いた他の関数の前に呼び出されることを保証 します。 これは、次の呼び出しと厳密にペアリングTSPI_providerShutdownこれらのペアは重複する可能性があります。たとえば、テレフォニー操作の進行中に、バージョン 1.4 以前の Windows テレフォニーに付属のテレフォニー コントロール パネル ユーティリティを使用する場合などです。 既に未処理のペアがある場合は、この関数の呼び出しを無視する (成功を返す) 必要があります。

サービス プロバイダーは、その時点で実用的な数の整合性チェックを実行する必要があります。 TSPI_providerInit が呼び出され、実行する準備が整っていることを確認します。 ただし、一部の整合性エラーまたはインストール エラーは、操作が試行されるまで検出できません。 エラー LINEERR_NODRIVERを使用して、検出時にこのような非特異的なエラーを報告できます。

TAPI レベルに直接対応する関数はありません。 そのレベルでは、複数の異なる使用状況インスタンスを未処理にすることができ、後続の操作でインスタンスを識別するために "アプリケーション ハンドル" が返されます。 TSPI レベルでは、インターフェイス アーキテクチャでは、個別のサービス プロバイダーごとに 1 つの使用状況インスタンスのみがサポートされます。

必要条件

   
対象プラットフォーム Windows
ヘッダー tspi.h

関連項目

TSPI_lineNegotiateTSPIVersion

TSPI_providerShutdown

TUISPI_lineConfigDialog

TUISPI_lineConfigDialogEdit

TUISPI_phoneConfigDialog

TUISPI_providerConfig

TUISPI_providerInstall

TUISPI_providerRemove