Share via


Portmon for Windows v3.03

作成者: Mark Russinovich

公開日: 2012 年 1 月 12 日

DownloadPortmon をダウンロード(226 KB)
Sysinternals Live から今すぐ実行します。

はじめに

Portmon は、システム上のすべてのシリアルおよびパラレル ポートのアクティビティを監視および表示するユーティリティです。 高度なフィルター処理と検索機能を備えており、Windows の動作を調べる、アプリケーションによるポート使用状況を確認する、システムまたはアプリケーションの構成の問題を追跡するための強力なツールです。

Portmon 3.x

Portmon のバージョン 3.x では、多数の強力な機能が導入されています。

  • リモート監視: TCP/IP 経由で、あるいはインターネット経由でアクセスできる任意のコンピューターからカーネル モードまたは Win32 デバッグ出力をキャプチャします。 複数のリモート コンピューターを同時に監視できます。 Portmon は、Windows NT/2K システムで実行していて、同じネットワーク近隣の別の Windows NT/2K システムからキャプチャしている場合でも、クライアント ソフトウェア自体をインストールします。
  • 最新のフィルター リスト:Portmon は強力なフィルター機能で拡張されており、最新のフィルター選択内容を記憶し、再選択を容易にするインターフェイスを備えています。
  • クリップボードへのコピー: 出力ウィンドウで複数行を選択し、その内容をクリップボードにコピーできます。
  • 強調表示: 強調表示フィルターに一致するデバッグ出力を強調表示します。強調表示する色をカスタマイズすることもできます。
  • ファイルへのログ記録: デバッグ出力をキャプチャしながらファイルに書き込みます。
  • 印刷: キャプチャしたデバッグ出力のすべてまたは一部をプリンターに出力します。
  • 1 つのファイルのペイロード:Portmon が 1 つのファイルとして実装されるようになりました。

これらすべての機能について、オンライン ヘルプ ファイルで詳しく説明しています。

PortMon screenshot

インストールと使用

Portmon プログラム ファイル (portmon.exe) を実行するだけで、Portmon がデバッグ出力のキャプチャをすぐに開始します。 Windows 95 で Portmon を実行するには、Microsoft から WinSock2 更新プログラムを入手する必要があります。 Windows NT/2K で Portmon を実行する場合は、ネットワーク ドライブ以外に portmon.exe を配置する必要があり、管理者特権が必要です。 メニュー、ホット キー、またはツール バー ボタンを使用すると、ウィンドウのクリア、監視データのファイルへの保存、出力の検索、ウィンドウ フォントの変更などを行うことができます。 Portmon のすべての機能について、オンライン ヘルプで説明しています。

Portmon は、すべてのシリアルおよびパラレル ポートの I/O 制御 (IOCTL) コマンドを理解し、関連するパラメーターに関する興味深い情報と共にそれらを表示します。 読み取り要求と書き込み要求の場合、Portmon はバッファーの最初の数十バイトを表示し、'.' を使用して印刷不可能な文字を表します。 [Show Hex] (16 進数の表示) メニュー オプションを使用すると、バッファー データの出力を ASCII にするか生の 16 進数にするかを切り替えることができます。

動作のしくみ: WinNT

Portmon GUI は、シリアル およびパラレル ポートを識別する役割を担います。 これを行うしくみは、HKEY_LOCAL_MACHINE\Hardware\DeviceMap\SerialComm で構成されているシリアル ポートと、HKEY_LOCAL_MACHINE\Hardware\DeviceMap\Parallel Ports で定義されているパラレル ポートを列挙することです。 これらのキーには、シリアルとパラレルのポート デバイス名と Win32 のアクセス可能な名前の間のマッピングが含まれています。

監視するポートを選択すると、Portmon は、対象の NT の名前 (\device\serial0 など) を含む要求をデバイス ドライバーに送信します。 ドライバーは、標準のフィルター処理 API を使用して、独自のフィルター デバイス オブジェクトをターゲット デバイス オブジェクトにアタッチします。 最初に、ZwCreateFile を使用してターゲット デバイスを開きます。 次に、ZwCreateFile から受け取ったハンドルをデバイス オブジェクト ポインターに変換します。 ターゲットの特性に一致する独自のフィルター デバイス オブジェクトを作成した後、ドライバーは IoAttachDeviceByPointer を呼び出してフィルターを確立します。 その時点から、Portmon ドライバーは、ターゲット デバイスを対象とするすべての要求を認識するようになります。

Portmon には、すべての標準のシリアルおよびパラレル ポート IOCTL に関する知識が組み込まれています。これが、アプリケーションとドライバーがポートから状態情報を構成および読み取る主な方法です。 IOCTL は DDK ファイル \ddk\src\comm\inc\ntddser.h および \ddk\src\comm\inc\ntddpar.h に定義されていて、一部は DDK に文書化されています。

動作のしくみ: Windows 95 および 98

Windows 95 および 98 では、Portmon GUI は動的に読み込まれた VxD に依存して、シリアルおよびパラレルのアクティビティをキャプチャします。 Windows VCOMM (Virtual Communications) デバイス ドライバーは、パラレルおよびシリアル デバイスへのインターフェイスとして機能するため、ポートにアクセスするアプリケーションは、そのサービスを間接的に使用します。 Portmon VxD は、標準の VxD サービス フックを使用して、VCOMM の機能へのすべてのアクセスをインターセプトします。 NT デバイス ドライバーと同様に、Portmon の VxD は、要求を解釈してわかりやすい形式で表示します。 Windows 95 および 98 の場合、Portmon はすべてのポートを監視するため、NT の場合のようなポートの選択はありません。

DownloadPortmon をダウンロード(226 KB)

Sysinternals Live から今すぐ実行します。