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

서비스 공급자가 LINETSPIOPTIONS_ 값을 지정하는 값을 작성할 수 있는 DWORD 크기의 메모리 위치에 대한 포인터입니다. 이 매개 변수를 사용하면 서비스 공급자가 TAPI에서 원하는 선택적 동작을 나타내는 비트를 반환할 수 있습니다. TAPI는 TSPI_providerInit 호출하기 전에 DWORD 옵션을 0으로 설정하므로 서비스 공급자가 이러한 옵션을 원하지 않는 경우 DWORD를 0으로 설정할 수 있습니다.

현재 이 포인터를 통해 반환되도록 정의된 비트는 LINETSPIOPTION_NONREENTRANT. 서비스 공급자는 완전 선점, 다중 스레드, 멀티태스킹, 다중 프로세서 작업(예: 뮤텍스로 보호되는 전역 데이터 업데이트)을 위해 설계되지 않은 경우 이 비트를 설정합니다. 이 비트가 설정되면 TAPI는 서비스 공급자에게 한 번에 한 번만 호출합니다. 서비스 공급자가 원래 함수 호출에서 반환될 때까지 다른 진입점이나 해당 진입점을 다시 호출하지 않습니다. 이 비트 집합이 없으면 TAPI는 동일한 진입점에 여러 번을 포함하여 여러 서비스 공급자 진입점을 동시에 호출할 수 있습니다(실제로 다중 프로세서 시스템에서 동시에).

참고중요: 이 비트를 설정하면 성능이 저하된다는 점을 강조해야 합니다. 개발용으로만 사용하지만 배송된 프로덕션 서비스 공급자는 사용하지 않는 것이 좋습니다.
 
TAPI는 다른 TSPI 함수가 호출되는 것을 차단하지 않도록 대화 상자(TUISPI_lineConfigDialog, TUISPI_lineConfigDialogEdit, TUISPI_phoneConfigDialog, TUISPI_providerConfig, TUISPI_providerInstall, TUISPI_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 Telephony와 함께 제공된 전화 통신 제어판 유틸리티가 사용되는 경우 겹칠 수 있습니다. 이미 미해결 쌍이 있는 경우 이 함수에 대한 호출을 무시해야 합니다(성공 반환).

서비스 공급자는 당시에 실용적이면서 많은 일관성 검사를 수행해야 합니다. TSPI_providerInit 실행할 준비가 되었는지 확인하기 위해 호출됩니다. 그러나 일부 일관성 또는 설치 오류는 작업을 시도할 때까지 검색할 수 없습니다. 오류 LINEERR_NODRIVER 감지될 때 이러한 비특이적 오류를 보고하는 데 사용할 수 있습니다.

TAPI 수준에는 직접 해당하는 함수가 없습니다. 이 수준에서는 후속 작업에서 instance 식별하기 위해 반환된 "애플리케이션 핸들"을 사용하여 여러 다른 사용 인스턴스를 처리할 수 있습니다. TSPI 수준에서 인터페이스 아키텍처는 각 고유 서비스 공급자에 대해 단일 사용 instance 지원합니다.

요구 사항

   
대상 플랫폼 Windows
헤더 tspi.h

추가 정보

TSPI_lineNegotiateTSPIVersion

TSPI_providerShutdown

TUISPI_lineConfigDialog

TUISPI_lineConfigDialogEdit

TUISPI_phoneConfigDialog

TUISPI_providerConfig

TUISPI_providerInstall

TUISPI_providerRemove