GetOwnerModuleFromTcpEntry-Funktion (iphlpapi.h)
Die GetOwnerModuleFromTcpEntry-Funktion ruft Daten zu dem Modul ab, das die Kontextbindung für einen bestimmten IPv4-TCP-Endpunkt in einer MIB-Tabellenzeile ausgestellt hat.
Syntax
IPHLPAPI_DLL_LINKAGE DWORD GetOwnerModuleFromTcpEntry(
[in] PMIB_TCPROW_OWNER_MODULE pTcpEntry,
[in] TCPIP_OWNER_MODULE_INFO_CLASS Class,
[out] PVOID pBuffer,
[in, out] PDWORD pdwSize
);
Parameter
[in] pTcpEntry
Ein Zeiger auf eine MIB_TCPROW_OWNER_MODULE-Struktur , die den IPv4-TCP-Endpunkteintrag enthält, der zum Abrufen des Besitzermoduls verwendet wird.
[in] Class
Ein TCPIP_OWNER_MODULE_INFO_CLASS Enumerationswert, der den Datentyp angibt, der in Bezug auf das Besitzermodul abgerufen werden soll. Die TCPIP_OWNER_MODULE_INFO_CLASS-Enumeration ist in der Headerdatei Iprtrmib.h definiert.
Dieser Parameter muss auf TCPIP_OWNER_MODULE_INFO_BASIC festgelegt werden.
[out] pBuffer
Ein Zeiger auf einen Puffer, der eine TCPIP_OWNER_MODULE_BASIC_INFO-Struktur mit den Besitzermoduldaten enthält. Der Typ der in diesem Puffer zurückgegebenen Daten wird durch den Wert des Class-Parameters angegeben.
Die folgenden Strukturen werden für die Daten in Buffer verwendet, wenn Class auf den entsprechenden Wert festgelegt ist.
Klassenenumerationswert | Pufferdatenformat |
---|---|
TCPIP_OWNER_MODULE_BASIC_INFO | TCPIP_OWNER_MODULE_BASIC_INFO |
[in, out] pdwSize
Die geschätzte Größe der in Buffer zurückgegebenen Struktur in Bytes. Wenn dieser Wert zu klein festgelegt ist, wird ERROR_INSUFFICIENT_BUFFER von dieser Funktion zurückgegeben, und dieses Feld enthält die richtige Größe des Puffers. Die erforderliche Größe ist die Größe der entsprechenden Struktur sowie eine zusätzliche Anzahl von Bytes, die der Länge der Daten entspricht, auf die in der Struktur verwiesen wird (z. B. der Name und die Pfadzeichenfolgen).
Rückgabewert
Wenn der Funktionsaufruf erfolgreich ist, wird der Wert NO_ERROR zurückgegeben.
Wenn die Funktion fehlschlägt, ist der Rückgabewert einer der folgenden Fehlercodes.
Rückgabecode | Beschreibung |
---|---|
|
Für die Tabelle wurde nicht genügend Speicherplatz zugewiesen. Die Größe der Tabelle wird im pdwSize-Parameter zurückgegeben und muss in einem nachfolgenden Aufruf dieser Funktion verwendet werden, um die Tabelle erfolgreich abzurufen. |
|
Ein Parameter ist falsch. Dieser Wert wird zurückgegeben, wenn einer der pTcpEntry - oder pdwSize-ParameterNULL ist. Dieser Wert wird auch zurückgegeben, wenn der Class-Parameter nicht gleich TCPIP_OWNER_MODULE_INFO_BASIC ist. |
|
Es ist nicht genügend Arbeitsspeicher verfügbar, um den Vorgang abzuschließen. |
|
Ein Element wurde nicht gefunden. Dieser Wert wird zurückgegeben, wenn das dwOwningPid-Element der MIB_TCPROW_OWNER_MODULE Struktur, auf die der pTcpEntry-Parameter verweist, null war oder nicht gefunden werden konnte. |
|
Nur ein Teil einer Anforderung wurde abgeschlossen. |
Hinweise
Der Buffer-Parameter enthält nicht nur eine Struktur mit Zeigern auf bestimmte Daten, z. B. Zeiger auf die Zeichenfolgen, die den Namen und Pfad des Besitzermoduls enthalten, sondern auch die tatsächlichen Daten selbst. dies ist der Name und die Pfadzeichenfolgen. Stellen Sie daher beim Berechnen der Puffergröße sicher, dass genügend Platz für die Struktur und die Daten vorhanden ist, auf die die Elemente der Struktur verweisen.
Die Auflösung von TCP-Tabelleneinträgen in Besitzermodule ist eine bewährte Methode. In einigen Fällen kann der in der TCPIP_OWNER_MODULE_BASIC_INFO-Struktur zurückgegebene Besitzermodulname ein Prozessname sein, z. B. "svchost.exe", ein Dienstname (z. B. "RPC") oder ein Komponentenname, z. B. "timer.dll".
Bei Computern, die unter Windows Vista oder höher ausgeführt werden, können die pModuleName - und pModulePath-Member der TCPIP_OWNER_MODULE_BASIC_INFO , die von der GetOwnerModuleFromTcpEntry-Funktion abgerufen werden, auf eine leere Zeichenfolge für einige TCP-Verbindungen verweisen. Anwendungen, die TCP-Verbindungen starten, die sich im Windows-Systemordner (standardmäßig C:\Windows\System32) befinden, gelten als geschützt. Wenn die GetOwnerModuleFromTcpEntry-Funktion von einem Benutzer aufgerufen wird, der kein Mitglied der Gruppe Administratoren ist, ist der Funktionsaufruf erfolgreich, aber die Elemente pModuleName und pModulePath verweisen auf den Arbeitsspeicher, der eine leere Zeichenfolge für die TCP-Verbindungen enthält, die von geschützten Anwendungen gestartet wurden.
Bei Computern, die unter Windows Vista oder höher ausgeführt werden, wird der Zugriff auf die pModuleName - und pModulePath-Member der TCPIP_OWNER_MODULE_BASIC_INFO-Struktur durch die Benutzerkontensteuerung (UAC) eingeschränkt. Wenn eine Anwendung, die diese Funktion aufruft, von einem Benutzer ausgeführt wird, der als Mitglied der Administratorgruppe angemeldet ist, wird dieser Aufruf erfolgreich ausgeführt, aber der Zugriff auf diese Member gibt eine leere Zeichenfolge zurück, es sei denn, die Anwendung wurde in der Manifestdatei mit einem requestedExecutionLevel gekennzeichnet, der auf requireAdministrator festgelegt ist. Wenn in der Anwendung unter Windows Vista oder höher diese Manifestdatei fehlt, muss ein Benutzer, der sich als Mitglied der Gruppe "Administratoren" angemeldet hat, das nicht der integrierte Administrator ist, die Anwendung dann in einer erweiterten Shell als integrierter Administrator (RunAs-Administrator) ausführen, damit der Zugriff auf die geschützten pModuleName - und pModulePath-Member zulässig ist.
Anforderungen
Unterstützte Mindestversion (Client) | Windows Vista, Windows XP mit SP2 [nur Desktop-Apps] |
Unterstützte Mindestversion (Server) | Windows Server 2008, Windows Server 2003 mit SP1 [nur Desktop-Apps] |
Zielplattform | Windows |
Kopfzeile | iphlpapi.h |
Bibliothek | Iphlpapi.lib |
DLL | Iphlpapi.dll |