이제 중요 Lpc가 alpc에서 에뮬레이트되고 대신 !alpc 확장을 사용합니다.
!lpc 확장은 대상 시스템의 모든 LPC(로컬 프로시저 호출) 포트 및 메시지에 대한 정보를 표시합니다.
!lpc message MessageID
!lpc port Port
!lpc scan Port
!lpc thread Thread
!lpc PoolSearch
!lpc
매개 변수
메시지
(Windows Server 2003, Windows XP 및 Windows 2000만 해당) 큐에 메시지가 포함된 서버 포트와 이 메시지를 기다리는 스레드(있는 경우)와 같은 메시지에 대한 정보를 표시합니다.
MessageID
(Windows Server 2003, Windows XP 및 Windows 2000만 해당) 표시할 메시지의 메시지 ID를 지정합니다. 이 매개 변수의 값이 0이거나 이 매개 변수를 생략하면 !lpc 메시지 명령에 메시지의 요약 목록이 표시됩니다. (Windows 2000 SP1(서비스 팩 1)에서 요약에는 LPC 영역의 모든 메시지가 포함됩니다. Windows 2000 SP2(서비스 팩 2), Windows XP 및 이후 버전의 Windows에서는 커널 풀의 모든 메시지가 요약에 포함됩니다. 페이징된 메시지는 포함되지 않습니다.)
항구
(Windows Server 2003, Windows XP 및 Windows 2000만 해당) 포트 이름, 세마포 상태, 큐의 메시지, 런다운 큐의 스레드, 핸들 수, 참조 및 관련 포트와 같은 포트 정보를 표시합니다.
스캔하다
(Windows Server 2003, Windows XP 및 Windows 2000만 해당) 지정된 포트 및 연결된 모든 포트에 대한 요약 정보를 표시합니다.
항구
(Windows Server 2003, Windows XP 및 Windows 2000만 해당) 표시할 포트의 16진수 주소를 지정합니다. !lpc 포트 명령을 사용하고 포트가 0이거나 생략된 경우 모든 LPC 포트의 요약 목록이 표시됩니다. !lpc scan 명령을 사용하는 경우 포트는 실제 포트의 주소를 지정해야 합니다.
스레드
(Windows Server 2003, Windows XP 및 Windows 2000만 해당) 런다운 포트 큐에 지정된 스레드를 포함하는 모든 포트에 대한 포트 정보를 표시합니다.
스레드
(Windows Server 2003, Windows XP 및 Windows 2000만 해당) 스레드의 16진수 주소를 지정합니다. 0이거나 생략된 경우 !lpc 스레드 명령은 모든 LPC 작업을 수행하는 모든 스레드의 요약 목록을 표시합니다.
PoolSearch
(Windows Server 2003 및 Windows XP에만 해당) !lpc 메시지 명령이 커널 풀에서 메시지를 검색하는지 여부를 결정합니다. !lpc PoolSearch를 사용할 때마다 이 설정은 설정 또는 해제됩니다(초기 설정은 커널 풀을 검색하지 않음). 이는 MessageID에 0이 아닌 값을 지정하는 !lpc 메시지 명령에만 영향을 줍니다.
DLL
Kdexts.dll
추가 정보
LPC에 대한 자세한 내용은 WDK(Windows 드라이버 키트) 설명서와 Mark Russinovich 및 David Solomon의 Microsoft Windows 내부 문서를 참조하세요.
설명
이 확장은 Windows Vista 이상 버전의 Windows에서 지원되지 않습니다.
Windows Server 2003, Windows XP 및 Windows 2000에서는 인수 없이 !lpc를 사용하면 디버거 명령 창에서 이 확장에 도움이 됩니다.
메시지에 대한 회신을 기다리는 것으로 표시된 스레드가 있는 경우 지연된 메시지의 ID와 함께 !lpc 메시지 명령을 사용합니다. 이 명령은 지정된 메시지, 메시지를 포함하는 포트 및 모든 관련 스레드를 표시합니다.
메시지를 찾을 수 없고 읽기 오류(예: "영역 세그먼트에 액세스할 수 없음")가 없는 경우 서버에서 메시지를 받았습니다.
이 경우 일반적으로 !lpc 스레드 명령을 사용하여 서버 포트를 찾을 수 있습니다. 회신을 기다리는 스레드는 서버 통신 큐에 연결됩니다. 이 명령은 지정된 스레드를 포함하는 모든 포트를 표시합니다. 포트 주소를 알고 나면 !lpc 포트 명령을 사용합니다. 그런 다음 각 스레드의 주소와 함께 !lpc 스레드 명령을 사용하여 각 스레드에 대한 보다 구체적인 정보를 얻을 수 있습니다.
다음은 Windows XP 시스템에서 이 확장의 출력에 대한 몇 가지 예입니다.
이 예제에서는 모든 포트 LPC 포트가 표시됩니다.
kd> !lpc port
Scanning 225 objects
1 Port: 0xe1405650 Connection: 0xe1405650 Communication: 0x00000000 'SeRmCommandPort'
1 Port: 0xe141ef50 Connection: 0xe141ef50 Communication: 0x00000000 'SmApiPort'
1 Port: 0xe13c5740 Connection: 0xe13c5740 Communication: 0x00000000 'ApiPort'
1 Port: 0xe13d9550 Connection: 0xe13d9550 Communication: 0x00000000 'SbApiPort'
3 Port: 0xe13d8830 Connection: 0xe141ef50 Communication: 0xe13d8910 '
80000004 Port: 0xe13d8910 Connection: 0xe141ef50 Communication: 0xe13d8830 '
3 Port: 0xe13d8750 Connection: 0xe13d9550 Communication: 0xe13a4030 '
.....
이전 예제에서 주소 e14ae238의 포트에는 메시지가 없습니다. 즉, 모든 메시지가 선택되었으며 새 메시지가 도착하지 않았습니다.
kd> !lpc port e14ae238
Server connection port e14ae238 Name: ApiPort
Handles: 1 References: 107
Server process : 84aa0140 (csrss.exe)
Queue semaphore : 84a96da8
Semaphore state 0 (0x0)
The message queue is empty
The LpcDataInfoChainHead queue is empty
이전 예제에서 0xe14ae238 포트에는 큐에 대기되었지만 서버에서 아직 선택하지 않은 메시지가 있습니다.
kd> !lpc port 0xe14ae238
Server connection port e14ae238 Name: ApiPort
Handles: 1 References: 108
Server process : 84aa0140 (csrss.exe)
Queue semaphore : 84a96da8
Semaphore state 0 (0x0)
Messages in queue:
0000 e20d9b80 - Busy Id=0002249c From: 0584.0680 Context=00000021 [e14ae248 . e14ae248]
Length=0098007c Type=00000001 (LPC_REQUEST)
Data: 00000000 0002021e 00000584 00000680 002f0001 00000007
The message queue contains 1 messages
The LpcDataInfoChainHead queue is empty
나머지 Windows XP 예제는 이 확장과 함께 사용할 수 있는 다른 옵션과 관련이 있습니다.
kd> !lpc message 222be
Searching message 222be in threads ...
Client thread 842a4db0 waiting a reply from 222be
Searching thread 842a4db0 in port rundown queues ...
Server communication port 0xe114a3c0
Handles: 1 References: 1
The LpcDataInfoChainHead queue is empty
Connected port: 0xe1e7b948 Server connection port: 0xe14ae238
Client communication port 0xe1e7b948
Handles: 1 References: 3
The LpcDataInfoChainHead queue is empty
Server connection port e14ae238 Name: ApiPort
Handles: 1 References: 107
Server process : 84aa0140 (csrss.exe)
Queue semaphore : 84a96da8
Semaphore state 0 (0x0)
The message queue is empty
The LpcDataInfoChainHead queue is empty
Done.
kd> !lpc thread 842a4db0
Searching thread 842a4db0 in port rundown queues ...
Server communication port 0xe114a3c0
Handles: 1 References: 1
The LpcDataInfoChainHead queue is empty
Connected port: 0xe1e7b948 Server connection port: 0xe14ae238
Client communication port 0xe1e7b948
Handles: 1 References: 3
The LpcDataInfoChainHead queue is empty
Server connection port e14ae238 Name: ApiPort
Handles: 1 References: 107
Server process : 84aa0140 (csrss.exe)
Queue semaphore : 84a96da8
Semaphore state 0 (0x0)
The message queue is empty
The LpcDataInfoChainHead queue is empty
kd> !lpc scan e13d8830
Scanning 225 objects
3 Port: 0xe13d8830 Connection: 0xe141ef50 Communication: 0xe13d8910 '
80000004 Port: 0xe13d8910 Connection: 0xe141ef50 Communication: 0xe13d8830 '
Scanning 3 objects