Поделиться через


!lpc

Важный 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) Указывает идентификатор сообщения, отображаемого. Если значение этого параметра равно 0 или этот параметр опущен, команда сообщения !lpc отображает сводный список сообщений. (В Windows 2000 с пакетом обновления 1 (SP1) сводка содержит все сообщения в зоне LPC. В Windows 2000 с пакетом обновления 2 (SP2), Windows XP и более поздними версиями Windows сводка содержит все сообщения в пуле ядра. Сообщения со страницами не включены.)

порт
(Только Windows Server 2003, Windows XP и Windows 2000) Отображает сведения о портах, такие как имя порта, состояние семафора, сообщения в очередях, потоки в очереди запуска, количество дескрипторов, ссылки и связанные порты.

сканировать
(Только Windows Server 2003, Windows XP и Windows 2000) Отображает сводную информацию о указанном порту и обо всех портах, подключенных к нему.

Порт
(Только Windows Server 2003, Windows XP и Windows 2000) Указывает шестнадцатеричный адрес отображаемого порта. Если используется команда порта !lpc, а порт равен 0 или опущен, отображается сводный список всех портов LPC. Если используется команда сканирования !lpc, порт должен указать адрес фактического порта.

нить
(Только Windows Server 2003, Windows XP и Windows 2000) Отображает сведения о порту для всех портов, содержащих указанный поток в очередях портов rundown.

Нить
(Только Windows Server 2003, Windows XP и Windows 2000) Указывает шестнадцатеричный адрес потока. Если это значение равно 0 или опущено, команда потока !lpc отображает сводный список всех потоков, выполняющих любые операции LPC.

PoolSearch
(только Windows Server 2003 и Windows XP) Определяет, выполняется ли команда сообщения !lpc для поиска сообщений в пуле ядра. Каждый раз при использовании !lpc PoolSearch этот параметр переключается или отключается (начальный параметр не выполняет поиск в пуле ядра). Это влияет только на команды сообщений !lpc, которые указывают ненулевое значение для MessageID.

DLL-библиотеки

Kdexts.dll

Дополнительная информация

Дополнительные сведения о LPCs см. в документации по комплекту драйверов Windows (WDK) и внутренних компонентах Microsoft Windows Марком Руссиновичем и Дэвидом Соломоном.

Замечания

Это расширение не поддерживается в Windows Vista и более поздних версиях Windows.

В Windows Server 2003, Windows XP и Windows 2000 с помощью !lpc без аргументов отображается справка по этому расширению в окне команды отладчика.

Если у вас есть поток, помеченный как ожидающий ответа на сообщение, используйте команду сообщения !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