Share via


SetAdditionalForegroundBoostProcesses 함수(Winuser.h)

SetAdditionalForegroundBoostProcesses 는 여러 프로세스가 데이터 또는 렌더링으로 포그라운드 환경에 기여하는 다중 프로세스 애플리케이션 모델을 사용하는 애플리케이션을 지원하는 성능 지원 API입니다. 예를 들어 브라우저(브라우저 관리자 또는 프레임, 탭, 플러그 인 등이 서로 다른 프로세스에서 호스팅됨) 및 IDE(컴파일 및 기타 작업을 위한 프로세스를 생성함)가 있습니다.

애플리케이션은 이 API를 사용하여 기본 애플리케이션을 지원하는 작업자 프로세스에 포그라운드 우선 순위 향상을 제공할 수 있습니다. 애플리케이션의 최상위 창이 포그라운드에 있을 때 이러한 애플리케이션은 모든 구성 프로세스에 균일한 우선 순위 향상을 적용할 수 있습니다.

구문

BOOL SetAdditionalForegroundBoostProcesses(
  HWND   topLevelWindow,
  DWORD  processHandleCount,
  HANDLE *processHandleArray
);

매개 변수

topLevelWindow

애플리케이션의 HWND(최상위 창)에 대한 핸들입니다.

processHandleCount

processHandleArray의 프로세스 핸들 수입니다. 이 함수는 최대 32개의 핸들을 사용하여 한 번에 호출할 수 있습니다. 이 매개 변수를 0 으로 설정하고 processHandleArrayNULL 로 설정하여 이전 승격 구성을 지웁니다.

processHandleArray

전경 강화 또는 승격 해제할 프로세스 핸들 그룹입니다. 이 매개 변수를 NULL 로 설정하고 processHandleCount0 으로 설정하여 이전 승격 구성을 지웁니다.

반환 값

호출이 애플리케이션을 승격하는 데 성공하면 TRUE 를 반환하고, 그렇지 않으면 FALSE 를 반환합니다. SetAdditionalForegroundBoostProcesses 는 마지막 오류 코드를 설정하므로 호출이 실패한 경우 애플리케이션에서 GetLastError() 를 호출하여 확장 정보를 가져올 수 있습니다(예: ERROR_INVALID_PARAMETER, ERROR_NOT_ENOUGH_MEMORY 또는 ERROR_ACCESS_DENIED).

설명

이 함수는 전달된 최상위 수준 HWND가 각각 포그라운드 또는 백그라운드로 이동할 때 모든 포그라운드가 향상되거나 강화되지 않는 프로세스 핸들 그룹을 사용합니다. 전달된 최상위 수준 HWND가 포그라운드 창이 될 때마다 핸들 배열에 전달된 프로세스에도 포그라운드 부스트가 적용됩니다. 최상위 HWND가 백그라운드로 이동하면 비슷한 드 부스트가 발생합니다.

이 함수에 전달된 최상위 HWND는 호출 프로세스에서 소유해야 합니다. 호출 프로세스에는 processHandleArray의 프로세스 핸들에 대한 PROCESS_SET_INFORMATION 액세스 권한이 있어야 합니다. 즉, 프로세스의 모든 창을 완전히 제어할 수 있어야 합니다. 일부 외부 구성 요소가 포그라운드를 사용하는 창을 삽입하거나 대화 상자가 나타나면 부스트가 손실됩니다.

두 개의 최상위 창이 있는 경우 각 창에 대해 이 함수를 호출해야 합니다.

SetAdditionalForegroundBoostProcesses가 호출될 때 전달된 최상위 HWND가 이미 포그라운드에 있는 경우 processHandleArray의 모든 프로세스가 즉시 향상됩니다.

핸들이 processHandleArray 에 있는 프로세스는 최상위 HWND가 포그라운드 창이 될 때만 포그라운드 부스트를 가져옵니다.

추가 전경 향상은 다음과 같은 경우에만 적용됩니다.

  1. 포그라운드 창이 변경되거나
  2. 창이 포그라운드에 있고 새 목록에 프로세스 핸들이 있는 동안 이 함수가 호출되거나 이전에 포함된 동안 목록에 프로세스 핸들이 포함되지 않은 경우

최상위 HWND를 소유하는 프로세스가 종료되거나 종료되면 추가 승격 관계가 삭제되고 보조 프로세스는 추가 포그라운드 부스팅을 받지 않습니다.

기본 프로세스의 최상위 HWND는 기본 프로세스의 최상위 HWND가 그룹화된 부스트 상태를 지우거나 HWND가 제거될 때까지 보조 프로세스에 대한 참조를 계속 유지합니다.

예제

이 간단한 시나리오에서 애플리케이션은 최상위 창을 만들 때 포그라운드 프로세스 향상 구성을 설정합니다. WM_CREATE 처리되면 함수는 lParam 의 핸들과 wParam의 핸들 수를 사용하여 호출됩니다. 이러한 프로세스는 포그라운드 창에서 m_AppWindow 이동함에 따라 포그라운드 또는 백그라운드 우선 순위가 향상됩니다. 함수가 호출될 때 m_AppWindow 포그라운드 창이면 프로세스도 즉시 포그라운드 우선 순위가 향상됩니다.

case WM_CREATE:   

    // 
    // Configure the passed in worker processes (handles) in lParam, to get foreground priority boost when m_AppWindow moves in and 
    // out of the foreground. 
    //  

    HANDLE *pMyHandles = retinterpret_cast<HANDLE*>(lParam); 
    DWORD cHandles = reinterpret_cast<DWORD>(wParam);  

    If (!SetAdditionalForegroundBoostProcesses(m_AppWindow, cHandles, pMyHandles)) 
    { 
        printf(“SetAdditionalForegroundBoostProcesses() setup failed with error code : %d\n”, GetLastError()); 
    } 

    break;

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows 11 빌드 22621
머리글 Winuser.h(Windows.h 포함)
라이브러리 User32.lib
DLL User32.dll

추가 정보

SetForegroundWindow