GetOwnerModuleFromTcpEntry 関数 (iphlpapi.h)

GetOwnerModuleFromTcpEntry 関数は、MIB テーブル行の特定の IPv4 TCP エンドポイントに対してコンテキスト バインドを発行したモジュールに関するデータを取得します。

構文

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
);

パラメーター

[in] pTcpEntry

所有者 モジュールの取得 に使用される IPv4 TCP エンドポイント エントリを含むMIB_TCPROW_OWNER_MODULE構造体へのポインター。

[in] Class

所有者モジュールに関して取得するデータの種類を示す TCPIP_OWNER_MODULE_INFO_CLASS 列挙値。 TCPIP_OWNER_MODULE_INFO_CLASS列挙は、Iprtrmib.h ヘッダー ファイルで定義されています。

このパラメーターは 、TCPIP_OWNER_MODULE_INFO_BASICに設定する必要があります。

[out] pBuffer

所有者モジュール データを含む TCPIP_OWNER_MODULE_BASIC_INFO 構造体を含むバッファーを指すポインター。 このバッファーで返されるデータの型は、 Class パラメーターの値によって示されます。

Class が対応する値に設定されている場合、Buffer のデータには次の構造体が使用されます。

クラス 列挙値 バッファー データ形式
TCPIP_OWNER_MODULE_BASIC_INFO TCPIP_OWNER_MODULE_BASIC_INFO

[in, out] pdwSize

Buffer で返される構造体の推定サイズ (バイト単位)。 この値が小さすぎると、この関数によって ERROR_INSUFFICIENT_BUFFER が返され、このフィールドにはバッファーの正しいサイズが含まれます。 必要なサイズは、対応する構造体のサイズに、構造体内で指されているデータの長さ (名前やパス文字列など) と等しい追加のバイト数を加算したものです。

戻り値

関数呼び出しが成功した場合は、 NO_ERROR 値が返されます。

関数が失敗した場合、戻り値は次のいずれかのエラー コードになります。

リターン コード 説明
ERROR_INSUFFICIENT_BUFFER
テーブルに十分な領域が割り当てられなかった。 テーブルのサイズは pdwSize パラメーターで返されます。テーブルを正常に取得するには、この関数の後続の呼び出しで使用する必要があります。
ERROR_INVALID_PARAMETER
パラメーターが正しくありません。 pTcpEntry パラメーターまたは pdwSize パラメーターのいずれかが NULL の場合、この値が返されます。 Class パラメーターが TCPIP_OWNER_MODULE_INFO_BASIC と等しくない場合も、この値が返されます。
ERROR_NOT_ENOUGH_MEMORY
メモリ不足のため、操作を完了できません。
ERROR_NOT_FOUND
要素が見つかりませんでした。 この値は、pTcpEntry パラメーターが指すMIB_TCPROW_OWNER_MODULE構造体の dwOwningPid メンバーが 0 であるか、見つからなかった場合に返されます。
ERROR_PARTIAL_COPY
要求の一部のみが完了しました。

解説

Buffer パラメーターには、所有者モジュールの名前とパスを含む 0 で終わる文字列へのポインターなど、特定のデータへのポインターを持つ構造体だけでなく、実際のデータ自体も含まれます。は名前とパスの文字列です。 したがって、バッファー サイズを計算するときは、構造体と構造体のメンバーが指すデータの両方に十分な領域があることを確認します。

所有者モジュールへの TCP テーブル エントリの解決はベスト プラクティスです。 場合によっては、 TCPIP_OWNER_MODULE_BASIC_INFO 構造体で返される所有者モジュール名には、"svchost.exe" などのプロセス名、サービス名 ("RPC"など)、または "timer.dll" などのコンポーネント名を指定できます。

Windows Vista 以降で実行されているコンピューターの場合、GetOwnerModuleFromTcpEntry 関数によって取得されるTCPIP_OWNER_MODULE_BASIC_INFOpModuleName メンバーと pModulePath メンバーが、一部の TCP 接続の空の文字列を指している場合があります。 Windows システム フォルダー (既定では C:\Windows\System32) にある TCP 接続を開始するアプリケーションは、保護されていると見なされます。 Administrators グループのメンバーではないユーザーによって GetOwnerModuleFromTcpEntry 関数が呼び出された場合、関数呼び出しは成功しますが、 pModuleName メンバーと pModulePath メンバーは、保護されたアプリケーションによって開始される TCP 接続の空の文字列を含むメモリを指します。

Windows Vista 以降で実行されているコンピューターの場合、TCPIP_OWNER_MODULE_BASIC_INFO構造の pModuleName メンバーと pModulePath メンバーへのアクセスは、ユーザー アカウント制御 (UAC) によって制限されます。 この関数を呼び出すアプリケーションが、組み込みの Administrator 以外の Administrators グループのメンバーとしてログオンしているユーザーによって実行された場合、この呼び出しは成功しますが、 requestedExecutionLevel が requireAdministrator に設定されたマニフェスト ファイルでアプリケーションがマークされていない限り、これらのメンバーへのアクセスは空の文字列を返します。 Windows Vista 以降のアプリケーションにこのマニフェスト ファイルがない場合、組み込みの管理者以外の Administrators グループのメンバーとしてログオンしているユーザーは、保護された pModuleName および pModulePath メンバーへのアクセスを許可するために、組み込みの Administrator (RunAs 管理者) として拡張シェルでアプリケーションを実行する必要があります。

要件

   
サポートされている最小のクライアント Windows Vista、SP2 を使用した Windows XP [デスクトップ アプリのみ]
サポートされている最小のサーバー Windows Server 2008、Windows Server 2003 SP1 [デスクトップ アプリのみ]
対象プラットフォーム Windows
ヘッダー iphlpapi.h
Library Iphlpapi.lib
[DLL] Iphlpapi.dll

関連項目

MIB_TCPROW_OWNER_MODULE

TCPIP_OWNER_MODULE_BASIC_INFO