!lpc
Wichtig Lpc wird jetzt in alpc emuliert, verwenden Sie stattdessen die Erweiterung !alpc.
Die Erweiterung !lpc zeigt Informationen über alle lokalen Prozeduraufrufe (LPC) Ports und Nachrichten im Zielsystem an.
!lpc message MessageID
!lpc port Port
!lpc scan Port
!lpc thread Thread
!lpc PoolSearch
!lpc
Nachricht
(Nur Windows Server 2003, Windows XP und Windows 2000) Zeigt Informationen zu einer Nachricht an, z. B. den Serverport, an dem sich die Nachricht in der Warteschlange befindet, und den Thread, der auf diese Nachricht wartet, falls vorhanden.
MessageID
(Nur Windows Server 2003, Windows XP und Windows 2000) Gibt die Nachrichten-ID der anzuzeigenden Nachricht an. Wenn der Wert dieses Parameters 0 ist oder dieser Parameter weggelassen wird, zeigt der Befehl !lpc message eine zusammenfassende Liste der Meldungen an. (Unter Windows 2000 mit Service Pack 1 (SP1) enthält die Zusammenfassung alle Nachrichten in der LPC-Zone. Unter Windows 2000 mit Service Pack 2 (SP2), Windows XP und späteren Versionen von Windows enthält die Zusammenfassung alle Meldungen im Kernel-Pool. Ausgelagerte Nachrichten sind nicht enthalten)
Hafen
(Nur Windows Server 2003, Windows XP und Windows 2000) Zeigt Portinformationen an, z. B. den Namen des Ports, seinen Semaphor-Status, Nachrichten in seinen Warteschlangen, Threads in seiner Rundown-Warteschlange, seine Handle-Anzahl, seine Referenzen und verwandte Ports.
abtasten
(Nur Windows Server 2003, Windows XP und Windows 2000) Zeigt zusammenfassende Informationen über den angegebenen Anschluss und alle mit ihm verbundenen Anschlüsse an.
Hafen
(Nur Windows Server 2003, Windows XP und Windows 2000) Gibt die hexadezimale Adresse des anzuzeigenden Ports an. Wenn der Befehl !lpc port verwendet wird und Port gleich 0 ist oder ausgelassen wird, wird eine Übersichtsliste aller LPC-Ports angezeigt. Wenn der Befehl !lpc scan verwendet wird, muss Port die Adresse eines tatsächlichen Ports angeben.
Faden
(Nur Windows Server 2003, Windows XP und Windows 2000) Zeigt Portinformationen für alle Ports an, die den angegebenen Thread in ihren Rundown-Port-Warteschlangen enthalten.
Faden
(Nur Windows Server 2003, Windows XP und Windows 2000) Gibt die hexadezimale Adresse des Threads an. Wenn dies 0 ist oder ausgelassen wird, zeigt der Befehl !lpc thread eine zusammenfassende Liste aller Threads an, die LPC-Operationen durchführen.
PoolSearch
(nur Windows Server 2003 und Windows XP) Legt fest, ob der Befehl !lpc message nach Nachrichten im Kernel-Pool sucht. Jedes Mal, wenn !lpc PoolSearch verwendet wird, schaltet diese Einstellung ein oder aus (die Grundeinstellung ist, dass der Kernel-Pool nicht durchsucht wird). Dies betrifft nur !lpc message-Befehle, die einen Wert ungleich Null für MessageID angeben.
Kdexts.dll
Informationen über LPCs finden Sie in der Windows Driver Kit (WDK) Dokumentation und unter Microsoft Windows Internals von Mark Russinovich und David Solomon.
Diese Erweiterung wird in Windows Vista und späteren Versionen von Windows nicht unterstützt.
Unter Windows Server 2003, Windows XP und Windows 2000 wird bei Verwendung von !lpc ohne Argumente die Hilfe für diese Erweiterung im Debugger-Befehlsfenster angezeigt.
Wenn Sie einen Thread haben, der als wartend auf eine Antwort auf eine Nachricht markiert ist, verwenden Sie den Befehl !lpc message mit der ID der verzögerten Nachricht. Dieser Befehl zeigt die angegebene Nachricht, den Port, der sie enthält, und alle zugehörigen Threads an.
Wenn die Nachricht nicht gefunden wird und keine Lesefehler (wie „Unable to access zone segment“) aufgetreten sind, hat der Server die Nachricht erhalten.
In diesem Fall kann der Server-Port normalerweise mit dem Befehl !lpc thread ermittelt werden. Threads, die auf Antworten warten, werden mit einer Server-Kommunikationswarteschlange verknüpft. Mit diesem Befehl werden alle Ports angezeigt, die den angegebenen Thread enthalten. Nachdem Sie die Anschlussadresse kennen, verwenden Sie den Befehl !lpc port. Genauere Informationen über jeden Thread können dann mit dem Befehl !lpc thread mit der Adresse jedes Threads abgerufen werden.
Hier sind einige Beispiele für die Ausgabe dieser Erweiterung auf einem Windows XP-System:
In diesem Beispiel werden alle LPC-Ports angezeigt.
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 '
.....
Im vorherigen Beispiel hat der Anschluss an der Adresse e14ae238 keine Nachrichten, d. h. alle Nachrichten wurden abgeholt und es sind keine neuen Nachrichten eingetroffen.
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
Im vorigen Beispiel enthält der Anschluss 0xe14ae238 Nachrichten, die in die Warteschlange gestellt wurden, aber noch nicht vom Server abgeholt wurden.
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
Die übrigen Beispiele für Windows XP betreffen die anderen Optionen, die mit dieser Erweiterung verwendet werden können.
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