Share via


QueueUserAPC2 함수(processthreadsapi.h)

지정된 스레드의 APC 큐에 사용자 모드 APC( 비동기 프로시저 호출 ) 개체를 추가합니다.

구문

BOOL QueueUserAPC2(
  PAPCFUNC             ApcRoutine,
  HANDLE               Thread,
  ULONG_PTR            Data,
  QUEUE_USER_APC_FLAGS Flags
);

매개 변수

ApcRoutine

지정된 스레드가 경고 가능한 대기 작업을 수행할 때 호출할 애플리케이션 제공 APC 함수에 대한 포인터입니다. 자세한 내용은 APCProc을 참조하세요.

특수 사용자 모드 APC의 경우 경고 대기가 필요하지 않습니다. 특수 사용자 모드 APC에 대한 자세한 내용은 비고 를 참조하세요.

Thread

스레드에 대한 핸들입니다. 핸들에는 THREAD_SET_CONTEXT 액세스 권한이 있어야 합니다. 자세한 내용은 동기화 개체 보안 및 액세스 권한을 참조하세요.

Data

ApcRoutine 매개 변수가 가리키는 APC 함수에 전달되는 단일 값입니다.

Flags

사용자 모드 APC의 동작을 수정하는 QUEUE_USER_APC_FLAGS 열거형 의 값입니다.

반환 값

함수가 성공하면 반환 값이 0이 아닙니다.

함수가 실패하면 반환 값은 0입니다. 확장 오류 정보를 가져오려면 GetLastError를 호출합니다.

설명

일반 사용자 모드 APC는 대상 스레드가 경고 가능한 상태인 경우에만 실행됩니다. 일반 사용자 모드 APC에 대한 추가 설명은 QueueUserAPC 함수 를 참조하세요.

대상 스레드가 경고 가능 상태가 아니더라도 특수 사용자 모드 APC는 항상 실행됩니다. 예를 들어 대상 스레드가 현재 사용자 모드 코드를 실행 중이거나 대상 스레드가 현재 경고 대기를 수행하는 경우 대상 스레드는 APC 실행에 대해 즉시 중단됩니다. 대상 스레드가 시스템 호출을 실행하거나 경고할 수 없는 대기를 수행하는 경우 시스템 호출 또는 경고할 수 없는 대기가 완료된 후 APC가 실행됩니다(대기가 중단되지 않음).

특수 사용자 모드 APC의 실행은 대상 스레드와 동기화되지 않으므로 특히 주의해야 합니다(다중 스레딩 및 동기화에 대한 일반적인 요구 사항을 초과). 예를 들어 잠금을 획득할 때 중단된 대상 스레드가 이미 잠금을 소유하거나 잠금을 획득하거나 해제하는 과정에 있을 수 있습니다. 또한 스레드가 특수 사용자 모드 APC를 수신하지 못하도록 차단하는 기능이 없으므로 특수 사용자 모드 APC를 이미 실행 중인 대상 스레드에서 특수 사용자 모드 APC를 실행할 수 있습니다.

현재 특수 사용자 모드 APC는 기본 아키텍처에서만 지원되며 WoW에서 실행할 때는 지원되지 않습니다.

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows 11(빌드 22000)
지원되는 최소 서버 Windows Server 2022(빌드 20348)
대상 플랫폼 Windows
헤더 processthreadsapi.h(Windows.h 포함)
라이브러리 Kernel32.lib
DLL Kernel32.dll