다음을 통해 공유


Windows CPI-C 고려 사항

다음 CPI-C(Common Programming Interface for Communications) 호출 및 Windows 확장은 특히 중요합니다. 호스트 통합 서버를 사용하기 전에 검토해야 합니다.

참고

호출 이름은 가명입니다. 실제 C 함수 이름은 가명 뒤의 괄호 안에 표시됩니다. 예를 들어 Set_Processing_Mode 호출의 가명입니다. 실제 함수 이름은 cmspm입니다.

Set_Processing_Mode( cmspm)
요청하는 작업이 완료될 때 후속 호출이 반환되는지(차단) 작업을 시작한 직후(차단 해제) 대화에 대해 지정합니다. 프로그램은 Wait_For_Conversation 발급하거나 Specify_Windows_HandlehwndNotify로 식별된 WndProc에 전송된 Windows 메시지를 통해 차단 해제 호출이 완료되었음을 알 수 있습니다. 대화에 대해 처리 모드가 설정되면 모드가 다시 설정될 때까지 대화의 모든 후속 호출에 적용됩니다.

Specify_Windows_Handle( xchwnd)
비블로킹 모드에서 작업이 완료될 때 메시지가 전송되는 창 핸들을 설정합니다.

Wait_For_Conversation( cmwait)
처리 모드 대화 특성이 CM_NON_BLOCKING 설정되고 return_code 매개 변수 에 CM_OPERATION_INCOMPLETE 반환될 때 시작된 작업이 완료될 때까지 기다립니다. Microsoft Windows용 백그라운드 스레드 또는 단일 스레드 애플리케이션을 실행할 때 Wait_For_Conversation 사용합니다. 이는 이전 버전의 Host Integration Server 및 SNA Server에서 코드를 포팅할 때 발생할 가능성이 큽니다.

중요

애플리케이션은 Set_Processing_Mode 호출하여 처리 모드를 설정할 수 있습니다. 창 핸들이 NULL로 설정되거나 이 호출이 실행되지 않은 경우 애플리케이션은 Wait_For_Conversation 호출하여 미해결 작업이 완료될 때 알림을 받아야 합니다.

비동기 작업이 완료되면 애플리케이션 창 hwndNotifyRegisterWindowMessage 에서 반환된 메시지를 입력 문자열로 "WinAsyncCPIC"와 함께 받습니다. wParam 값에는 완료 중인 작업의 대화 반환 코드가 포함됩니다. 해당 값은 원래 실행된 작업에 따라 달라집니다. lParam 인수에는 원래 함수 호출에 지정된 대화 식별자에 대한 CM_PTR 포함됩니다.

WinCPICCleanup
Windows CPI-C 구현에서 애플리케이션을 종료하고 등록을 취소합니다.

중요

이 함수는 Windows CPI-C 구현에서 애플리케이션 등록을 취소하기 위해 완료되면 애플리케이션에서 호출해야 합니다.

WinCPICExtractEvent
애플리케이션이 CPI-C 대화에 사용되는 이벤트 핸들을 결정하는 메서드를 제공합니다.

WinCPICIsBlocking
이전 차단 호출이 완료 될 때까지 기다리는 동안 작업이 실행 중인지 확인합니다. 이는 Windows 버전 3에서 사용되었습니다. x 는 Windows를 계속 진행할 수 있도록 하면서 PeekMessageLoop 에 들어갔습니다. 차단 함수에서 실행된 호출이 차단된 것처럼 애플리케이션에 표시되지만 Windows CPI-C DLL(동적 링크 라이브러리)은 다른 애플리케이션이 실행되도록 프로세서를 포기해야 합니다. 즉, 수신하는 메시지에 따라 차단 호출을 실행한 애플리케이션을 다시 입력할 수 있습니다. 이 instance WinCPICIsBlocking을 사용하여 미해결 차단 호출이 완료될 때까지 기다리는 동안 애플리케이션 작업이 현재 다시 입력되었는지 여부를 확인할 수 있습니다.

이 확장 은 Windows Specify_Processing_Mode 함수의 CM_BLOCKING 특성을 사용하도록 작성된 애플리케이션에 도움을 제공하기 위한 것입니다. WinCPICIsBlocking 은 Windows API 의 InSendMessage 와 동일한 용도로 사용됩니다.

원래 Windows 버전 3을 대상으로 한 이전 애플리케이션. x 및 는 여러 대화를 지원하므로 여러 미해결 작업을 동시에 지원할 수 있도록 Specify_Processing_Mode CM_NONBLOCKING 지정해야 합니다. 애플리케이션은 여전히 모든 환경에서 대화당 하나의 미해결 작업으로 제한됩니다.

참고

Windows CPI-C는 스레드당 두 개 이상의 미해결 차단 호출을 금지합니다.

WinCPICSetBlockingHook
Windows CPI-C 구현에서 새 함수를 통해 CPI-C 함수 호출을 차단할 수 있습니다. 차단 호출은 비동기 호출을 사용하지 않는 경우에만 적용됩니다. 함수를 차단해야 하는 경우 원래 요청이 완료될 때까지 차단 호출이 반복적으로 호출됩니다. 이렇게 하면 원래 애플리케이션이 호출이 반환되기를 기다리는 동안 Windows를 계속 실행할 수 있습니다. 차단 호출 내에서 애플리케이션을 다시 입력할 수 있습니다. WinCPICSetBlockingHook 는 Windows 버전 3에서 사용되었습니다. 시스템의 나머지 부분을 차단하지 않고 차단 호출을 만들기 위해 PeekMessageLoop 에 들어간 x 애플리케이션입니다.

참고

기본적으로 Windows Server는 PeekMessageLoop으로 이동하지 않습니다. 대신 호출이 완료되기를 기다리는 이벤트를 차단합니다. Windows용 WinCPICSetBlockingHook를 사용해야 하는 유일한 경우는 Windows용 단일 스레드 애플리케이션이 공통 소스 코드를 공유하는 경우입니다. 이 경우 이 호출을 명시적으로 수행해야 합니다. 이 호출을 WinCPICIsBlockingWinCPICUnhookBlockingHook와 대조합니다.

WinCPICSetEvent
Win32 이벤트 핸들을 동사 완성과 연결합니다.

WinCPICStartup
애플리케이션에서 필요한 Windows CPI-C 버전을 지정하고 특정 CPI-C 구현의 세부 정보를 검색할 수 있습니다.

중요

애플리케이션은 추가 Windows CPI-C 호출을 실행하기 전에 이 함수를 호출하여 Windows CPI-C 구현에 등록해야 합니다.

WinCPICUnhookBlockingHook
설치된 이전 차단 후크를 제거하고 기본 차단 메커니즘을 다시 설치합니다.