비동기 함수

애플리케이션에서 수행한 함수 호출에서 처리의 일부를 비동기적으로 완료하는 작업은 TAPI 2.x가 함수 호출에서 반환된 후 독립적인 실행 스레드에서 나머지를 수행합니다. 호출 처리가 완료되도록 서비스 공급자는 LAN 서버, 추가 기능 하드웨어, 스위치 또는 네트워크와 같은 시스템의 다른 활성 엔터티에 요청을 벡터화한 다음 애플리케이션으로 돌아갑니다. 이때 음수 오류 결과 또는 양수 요청 식별자가 애플리케이션에 반환됩니다.

비동기 완료 시(서비스 공급자가 하드웨어에서 중단을 수신하여 메시지를 배달해야 함) 서비스 공급자는 TAPISRV를 호출하고 "이벤트 X 방금 수행되었다고 보고합니다. 관련된 모든 애플리케이션에 적절한 메시지를 전달합니다." TAPISRV는 이 메시지를 수신하면 애플리케이션 프로세스에서 TAPI 동적 연결 라이브러리로 메시지를 전달합니다. 그러면 애플리케이션이 lineInitializeEx또는 phoneInitializeEx선택한 메시지 알림 체계에 따라 창 메시지를 게시하거나, 이벤트 핸들을 알리거나, I/O 완료 포트에 게시합니다.

작업의 비동기 부분이 완료되면 LINE_REPLY(또는 PHONE_REPLY) 메시지가 애플리케이션으로 전송됩니다. 이 메시지에는 해당 매개 변수 중 하나로서 함수 호출에서 반환된 요청 식별자가 포함됩니다. 이 요청 식별자를 사용하면 애플리케이션에서 완료된 원래 요청을 확인할 수 있습니다. (애플리케이션은 회신 메시지를 제대로 처리할 수 있도록 진행 중인 모든 요청의 요청 식별자를 기억해야 합니다.) LINE_REPLY(또는 PHONE_REPLY) 메시지에 대한 두 번째 매개 변수는 비동기 반환 값입니다. 이 값은 음수 값(오류의 경우) 또는 작업이 성공적으로 완료된 경우 0입니다. 비동기 작업의 경우 반환 값은 함수 반환의 일부로 반환되거나 LINE_REPLY 또는 PHONE_REPLY 메시지에서 dwParam2 매개 변수로 반환될 수 있습니다. 성공을 나타내는 값 0은 LINE_REPLY 메시지에서만 반환되며 함수의 반환 값으로 반환되지 않습니다.

initialize 함수(lineInitializeExphoneInitializeEx)는 TAPI에 이러한 메시지를 애플리케이션에 보내는 방법을 알려줍니다.

메모

경우에 따라 다중 스레드 애플리케이션이 애플리케이션이 줄 또는 전화 디바이스를 초기화한 스레드 이외의 스레드에서 비동기 함수를 호출하는 경우 비동기 함수가 반환되기 전에 애플리케이션이 LINE_REPLY 또는 PHONE_REPLY 메시지를 받을 수 있습니다. 이러한 경우 애플리케이션은 메시지 매개 변수를 저장하고 비동기 함수가 반환되고 요청 식별자가 메시지를 처리하기 전에 알려질 때까지 기다려야 합니다.