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 値が返されます。
関数が失敗した場合、戻り値は次のいずれかのエラー コードになります。
リターン コード | 説明 |
---|---|
|
テーブルに十分な領域が割り当てられなかった。 テーブルのサイズは pdwSize パラメーターで返されます。テーブルを正常に取得するには、この関数の後続の呼び出しで使用する必要があります。 |
|
パラメーターが正しくありません。 pTcpEntry パラメーターまたは pdwSize パラメーターのいずれかが NULL の場合、この値が返されます。 Class パラメーターが TCPIP_OWNER_MODULE_INFO_BASIC と等しくない場合も、この値が返されます。 |
|
メモリ不足のため、操作を完了できません。 |
|
要素が見つかりませんでした。 この値は、pTcpEntry パラメーターが指すMIB_TCPROW_OWNER_MODULE構造体の dwOwningPid メンバーが 0 であるか、見つからなかった場合に返されます。 |
|
要求の一部のみが完了しました。 |
解説
Buffer パラメーターには、所有者モジュールの名前とパスを含む 0 で終わる文字列へのポインターなど、特定のデータへのポインターを持つ構造体だけでなく、実際のデータ自体も含まれます。は名前とパスの文字列です。 したがって、バッファー サイズを計算するときは、構造体と構造体のメンバーが指すデータの両方に十分な領域があることを確認します。
所有者モジュールへの TCP テーブル エントリの解決はベスト プラクティスです。 場合によっては、 TCPIP_OWNER_MODULE_BASIC_INFO 構造体で返される所有者モジュール名には、"svchost.exe" などのプロセス名、サービス名 ("RPC"など)、または "timer.dll" などのコンポーネント名を指定できます。
Windows Vista 以降で実行されているコンピューターの場合、GetOwnerModuleFromTcpEntry 関数によって取得されるTCPIP_OWNER_MODULE_BASIC_INFOの pModuleName メンバーと 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 |