다음을 통해 공유


서버 스레드에서 호출자 식별

사용자가 가진 유일한 정보가 호출을 서비스한 서버 스레드인 경우에도 지정된 RPC 호출을 수행한 내용을 확인할 수 있습니다.

예를 들어 RPC 호출에 잘못된 매개 변수를 전달한 사용자를 확인하는 것이 매우 유용할 수 있습니다.

이 특정 호출에서 사용되는 프로토콜 시퀀스에 따라 다양한 수준의 세부 정보를 얻을 수 있습니다. 일부 프로토콜(예: NetBios)에는 이 정보가 전혀 없습니다.

서버 스레드에서 호출자 식별

  1. 서버 스레드를 대상으로 사용하여 사용자 모드 디버거를 시작합니다.

  2. | 을 사용하여 프로세스 ID 가져오기 (프로세스 상태) 명령:

    0:001> |
      0     id: 3d4 name: rtsvr.exe
    
  3. !rpcexts.getcallinfo 확장을 사용하여 이 프로세스에서 활성 호출을 가져옵니다. 구문에 대한 설명은 참조 페이지를 참조하세요. 0x3D4 프로세스 ID를 제공해야 합니다.

    0:001> !rpcexts.getcallinfo 0 0 FFFF 3d4
    Searching for call info ...
    PID  CELL ID   ST PNO IFSTART  THRDCELL  CALLFLAG CALLID   LASTTIME CONN/CLN
    ----------------------------------------------------------------------------
    03d4 0000.0004 02 000 19bb5061 0000.0002 00000001 00000001 00a1aced 0000.0003
    

    상태 02 또는 01(디스패치되거나 활성)인 호출을 찾습니다. 이 예제에서는 프로세스에 하나의 호출만 있습니다. 더 많은 항목이 있는 경우 !rpcexts.getdbgcell 확장을 THRDCELL 열의 셀 번호와 함께 사용해야 합니다. 이렇게 하면 스레드 ID를 검사하여 관심 있는 호출을 확인할 수 있습니다.

  4. 관심 있는 통화를 알고 나면 CONN/CLN 열의 셀 번호를 확인합니다. 연결 개체의 셀 ID입니다. 이 경우 셀 번호는 0000.0003입니다. 이 셀 번호와 프로세스 ID를 !rpcexts.getdbgcell에 전달합니다.

    0:001> !rpcexts.getdbgcell 3d4 0.3
    Getting cell info ...
    Connection
    Connection flags: Exclusive
    Authentication Level: Default
    Authentication Service: None
    Last Transmit Fragment Size: 24 (0x6F56D)
    Endpoint for the connection: 0x0.1
    Last send time (in seconds since boot):10595.565 (0x2963.235)
    Last receive time (in seconds since boot):10595.565 (0x2963.235)
    Getting endpoint info ...
    Process object for caller is 0xFF9DF5F0
    

이 확장은 이 연결의 클라이언트에 대해 사용할 수 있는 모든 정보를 표시합니다. 실제 정보의 양은 사용 중인 전송에 따라 달라집니다.

이 예제에서는 로컬 명명된 파이프가 전송으로 사용되고 호출자의 프로세스 개체 주소가 표시됩니다. 커널 디버거를 연결하거나 로컬 커널 디버거를 시작하는 경우 !process 확장을 사용하여 이 프로세스 주소를 해석할 수 있습니다.

LRPC가 전송으로 사용되는 경우 호출자의 프로세스 ID 및 스레드 ID가 표시됩니다.

TCP를 전송으로 사용하는 경우 호출자의 IP 주소가 표시됩니다.

원격 명명된 파이프를 전송으로 사용하는 경우 정보를 사용할 수 없습니다.

참고 이전 예제에서는 서버 스레드를 알고 있는 경우 클라이언트 스레드를 찾는 방법을 보여 주세요. 역방향 기술의 예는 중단된 호출 문제 분석을 참조하세요.