WinAPPCSetBlockingHook 함수를 사용하면 Windows APPC 구현이 새 함수를 통해 APPC 함수 호출을 차단할 수 있습니다. 기본적으로 Microsoft Windows에서 차단 호출은 요청이 완료될 때까지 호출 애플리케이션의 스레드를 일시 중단합니다.
구문
FARPROC WINAPI WinAPPCSetBlockingHook (
FARPROC lpBlockFunc);
매개 변수
lpBlockFunc
설치할 차단 함수의 주소를 instance 프로시저를 지정합니다.
반환 값
반환 값은 이전에 설치된 차단 함수의 프로시저 instance 가리킵니다. WinAPPCSetBlockingHook를 호출하는 애플리케이션 또는 라이브러리는 필요한 경우 복원할 수 있도록 이 반환 값을 저장해야 합니다. (중첩이 중요하지 않은 경우 애플리케이션은 WinAPPCSetBlockingHook 에서 반환된 값을 삭제하고 결국 WinAPPCUnhookBlockingHook을 사용하여 기본 메커니즘을 복원할 수 있습니다.)
설명
Windows APPC 구현에는 차단 APPC 함수가 구현되는 기본 메커니즘이 있습니다. 이 함수는 애플리케이션에 기본 함수 대신 차단 시간에 자체 함수를 실행할 수 있는 기능을 제공합니다.
기본 차단 함수는 다음과 같습니다.
BOOL DefaultBlockingHook (void) {
MSG msg;
/* get the next message if any */
if ( PeekMessage (&msg,0,0,PM_NOREMOVE) ) {
if ( msg.message = = WM_QUIT )
return FALSE; // let app process WM_QUIT
PeekMessage (&msg,0,0,PM_REMOVE) ;
TranslateMessage (&msg) ;
DispatchMessage (&msg) ;
}
/* TRUE if no WM_QUIT received */
return TRUE;
}
차단 함수는 WM_QUIT 메시지를 수신하는 경우 FALSE를 반환해야 하므로 Windows APPC는 애플리케이션에 제어를 반환하여 메시지를 처리하고 정상적으로 종료할 수 있습니다. 그렇지 않으면 함수가 TRUE를 반환해야 합니다.
이 함수는 스레드별로 구현됩니다. 다른 스레드에 영향을 주지 않고 차단 메커니즘을 대체할 특정 스레드를 제공합니다.
WinAPPCSetBlockingHook 함수는 더 복잡한 메시지 처리가 필요한 애플리케이션(예: MDI(여러 문서 인터페이스) 모델을 사용하는 애플리케이션을 지원하기 위해 제공됩니다.