問題タブ [windows-kernel]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
windows - 2 つの VirtualBox ホストを使用した Windows カーネルのデバッグ
私は Linux を実行しており、VirtualBox に 2 台の Windows 7 マシンをセットアップしています。
今、最初のマシンを使用して 2 番目のマシンをデバッグしようとしています。
そこで、2 台のマシンに同じホスト パイプを構成しました。
デバッガー マシンで、入力を待機する windbg を起動しますCOM1
。
デバッグ対象のマシンで、デバッグ モードを有効にして再起動し、
しかし、彼らはお互いを知らないようで、盲目的に待っているだけです。
何か間違っていますか?それとも、達成するのは不可能でしたか。
linux - Linux のシステム空間全体のアドレス空間がデマンド ページングを使用しないというのは本当ですか?
私は現在 Windows を研究していますが、Windows は、システム空間のアドレス空間でページ プールと非ページ プールと名付けられた 2 つのメモリ セクションを使用していることがわかりました。したがって、ウィンドウの重要なセクションのみが非ページ プール (デマンド ページングを使用しない) に保持されます。Linux では、すべてのシステム空間のアドレス空間がデマンド ページングの概念を使用しないと教えられましたが? その情報がすべて正しければ、Windows は Linux よりも実行に必要な RAM の量が少ないと結論付けるべきでしょうか??
windows - Windows デバイス ドライバの pdo と fdo の違いは何ですか?
私は自分で Windows デバイス ドライバーを勉強していますが、PDO と FDO を区別するのは非常に難しいと感じています。私が間違っている場合は、私が頭の中に持っている流れを教えてください!!
システムの起動時に、FDO を作成するルート バス ドライバーが読み込まれます。これで、子デバイスが列挙され、バス ドライバーのホット プラグ メソッドが呼び出され、新しい子デバイスが検出され、そのメソッドが PNP マネージャーに通知されると思います。PNP マネージャーは、ルート バス ドライバーの AddDevice() ルーチンを呼び出し、PCI などの新しいバスの PDO をインターンで作成します。全体の流れを詳しく説明してください。これは単なる私の想像です。そして、システムが FDO を作成する PCI バスの機能ドライバーをロードすることが文書化されています ?? このFDOは何ですか?? そして、なぜ私はそれが必要なのですか?? 私によると、PCIバスドライバーもルートバスと同じように、その子を列挙してそれらのPDOを作成する必要があります。または、このFDOはPDOのみを意味します?? 私はとても混乱しています:( !!
windows - I/O Manager のモデルが WinXP から WinVista+ に変更されましたか?
WDM、I/O マネージャーなどを試しています。I /O マネージャーがどのように動作するかについて説明している thisに出会いました。私は知りたいです
- これはWDM(XP時代)にも当てはまりますか? FSDとすべて(!!)
- そうでない場合、当時の I/O マネージャーの詳細はどこで入手できますか?
読んでいる間、WDMにはなかったと信じているユーザーモードドライバーとカーネルモードドライバーのようなにおいがするので、私はこれを疑っています。
kernel - WCHAR * を UNICODE STRING に変換
まずはWindowsドライバ開発に挑戦。WCHAR配列がnullで終了していないと仮定して、WCHAR配列(ユーザー空間からのもの)をUNICODE_STRING(カーネルモード)に変換するにはどうすればよいですか?
null で終わるかどうか、および新しいバッファー (null の場合は +2) を割り当てないかどうかを確認してから、RtlAnsiXXX 関数を使用する必要がありますか? 適切な方法は何ですか?
ありがとう!
kernel - Windows カーネル プログラミングを始めるには?
私は主に C# で作業するアプリケーション開発者です。C/C++ についてある程度の知識があります。私は Windows カーネル開発に非常に興味を持っています。これを学ぶためにレイアウトをスケッチしました。
これを達成するには、次の点について助けが必要です。
親切に助けてください。
windows - VS 2013 カーネル モード ドライバーのデバッグ
VS 2013 でカーネル デバッグをセットアップしようとしています。新しいターゲット マシンを追加するために [Drivers/Add] に移動すると、リモート コンピューターに接続され、多くのセットアップが実行されますが、失敗するコマンドが常に 2 つあります。 .
ログで失敗しているコマンドを調べ、それをバッチ ファイルに貼り付けて、ターゲット マシンで実行しました。私は元気に走ります。しかし、VS から [コンピューターの追加] を再実行しようとすると、同じエラーが発生します。
VMware VM ターゲットと物理 PC ターゲットの両方でこれを試しましたが、コンピューターを逆方向に追加しようとしましたが、常に同じ失敗が発生します。これらのマシンを相互に ping でき、すべてのマシンは Win8 x86 です。ネットワーク検出と共有がオンになっています。Windows ファイアウォールがオフになっています。これらはバージン OS インストールであるため、マシンには OS、VS2013、および WDK 8.1 以外は何もありません。
これを解決する方法に関するヒントはありますか?
linux - Linux x86 では、カーネル空間はユーザー空間にマップされていますか?
Windows 32 ビットでは、カーネルは合計 4G のユーザー仮想メモリ空間から 1G の仮想メモリを予約し、カーネル空間の一部をこの 1G 空間にマップするようです。
だから私の質問は:
- 32 ビット Linux で同様の状況はありますか?
- もしそうなら、どうすればメモリレイアウト全体を見ることができますか?
おもう
特定のプロセスのユーザー空間レイアウトしか見ることができません..
ありがとうございました!