!bpid

!bpid 拡張機能は、ターゲット コンピューター上のプロセスがデバッガーに分割されるように要求するか、ターゲット コンピューター上のプロセスにユーザー モード デバッガーをアタッチするように要求します。

    !bpid [Options] PID 

パラメーター

Option
このコマンドの追加のアクティビティを制御します。

Optionの有効な値は以下の表の通り。

-a

PIDで指定されたプロセスに新しいユーザー モード デバッガーをアタッチします。 ユーザー モード デバッガーは、ターゲット コンピューター上で実行されます。

-s

PIDで指定されたユーザー モード プロセスの中断の直前に、WinLogon プロセスで発生するブレークポイントを追加します。 これにより、ユーザーはアクションを試みる前に要求を確認できます。

-w

ターゲットコンピューターのメモリに要求を格納します。 その後、ターゲット システムは要求を繰り返すことができますが、通常は必要ありません。

PID
ターゲット コンピューター上の目的のプロセスのプロセス ID を指定します。 これを使用してターゲット コンピューター上のユーザー モード デバッガーを制御する場合、 PID は、ユーザー モード デバッガーではなく、ターゲット アプリケーションのプロセス ID である必要があります。 (通常、プロセス ID は 10 進形式で表示されるため、この前に0n を付けるか、16 進形式に変換することが必要になる場合があります)。

DLL

Kdexts.dll

この拡張機能コマンドは、x86 ベースの x64 ベースのターゲット コンピューターでサポートされています。

解説

このコマンドは、ユーザー モード デバッガーからカーネル デバッガーに入力と出力をリダイレクトする場合に特に便利です。 これにより、ユーザー モード ターゲット アプリケーションがユーザー モード デバッガーに分割され、カーネル デバッガーからの入力が要求されます。 詳細については、「カーネル デバッガー からのユーザーモード デバッガーの制御」を参照してください。

このコマンドが別の状況で使用される場合、ユーザー モード プロセスは DbgBreakPoint を呼び出します。 通常、これはカーネル デバッガーに直接分割されます。

-s オプションを使用すると、指定されたプロセスが中断される直前に WinLogon が中断されます。 これは、WinLogon のプロセス コンテキスト内でデバッグ アクションを実行する場合に便利です。 g (Go) コマンドを使用して、2 番目の中断に進むことができます。

この拡張機能の実行に失敗する方法があることに注意してください。

  • リソースの不足。 !bpid 拡張機能は、スレッドをターゲット プロセスに挿入するため、システムにはスレッドを作成するのに十分なリソースが必要です。 !bpid -a はターゲット コンピューターでデバッガーの完全なインスタンスを実行する必要があるため、-aオプションを使用すると、さらに多くのシステム リソースが必要になります。

  • ローダー ロックは既に保持されています。 !bpid !bpid -a はどちらも、デバッガーに中断させるために、ターゲット プロセスでスレッドを実行する必要があります。 別のスレッドがローダー ロックを保持している場合、!bpidスレッドは実行できず、デバッガーへのブレークが発生しない可能性があります。 したがって、ターゲット プロセスで使用可能なユーザー モード メモリが十分にあるときに !bpid が失敗した場合、ローダー ロックが保持される可能性があります。

  • 許可がありません。 !bpid 拡張機能の操作には、WinLogon がリモート スレッドを作成し、特定のプロセスにデバッガーをアタッチするのに十分なアクセス許可が必要です。

  • ntsd.exeにアクセスできない。 ntsd.exeが一般的な既知のパスに見つからない場合、!bpid は適切な PID の設定に失敗します。 ntsd.exeは、Windows Vista には既定では含まれないことに注意してください。