피드로 돌아가기
Part 2: How It Works Under the Hood
Dev.toDev.to
Infrastructure

ALPC 기반 RPC Proxy 구조를 통한 COM Running Object Table의 세션 공유 설계

Part 2: How It Works Under the Hood

Пастухов Алексей2026년 4월 12일3advanced

Context

Windows 세션 내 여러 프로세스가 라이브 객체 정보를 공유해야 하는 요구사항 존재. 개별 프로세스 내 데이터 구조나 커널 객체만으로는 전역적인 객체 매핑 및 상태 관리에 한계가 있음.

Technical Solution

  • rpcss.exe 프로세스 내에 세션 범위의 글로벌 테이블을 배치하여 단일 진실 공급원(Single Source of Truth) 구축
  • GetRunningObjectTable 함수 호출 시 실제 테이블 포인터 대신 IRunningObjectTable 인터페이스를 구현한 Proxy 객체 반환
  • ALPC(Advanced Local Procedure Call) 기반의 Local RPC 채널을 통한 프로세스 간 통신(IPC) 구조 설계
  • EnumRunning 호출 시점의 상태를 캡처하는 Snapshot 기반 Enumerator 제공으로 반복문 실행 중 데이터 일관성 보장
  • IBindCtx를 통한 Bind Context 전달 구조를 채택하여 Moniker 해소 과정의 파라미터 제어 유연성 확보

- 전역 상태 관리가 필요한 분산 프로세스 설계 시 Centralized Service와 Proxy 패턴 조합 검토 - 루프 내부에서 IPC(Inter-Process Communication) 호출 발생 시 누적 오버헤드 및 성능 병목 가능성 확인 - 리소스 공유 시 스냅샷 기반 열거(Enumeration)를 통해 동시성 제어 및 데이터 일관성 확보 전략 적용 - COM 기반 API 사용 후 CoTaskMemFree와 같은 명시적 메모리 해제 누락 여부 점검

원문 읽기