다음을 통해 공유


WinAPPCSetBlockingHook

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(여러 문서 인터페이스) 모델을 사용하는 애플리케이션을 지원하기 위해 제공됩니다.

참고 항목

WinAPPCIsBlocking
WinAPPCCancelBlockingCall