問題タブ [wdk]

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.

0 投票する
1 に答える
861 参照

windows - Windows I/Oマネージャー-読み取りのようなものと書き込みのようなものでのIRPの分類

タイプ(読み取り/書き込み)に基づいた操作前のコールバックでI / O要求パケット(IRP)を失敗させる必要があるWindowsファイルシステムミニフィルタードライバーを作成しています。操作が読み取りに似ている(データを読み取るだけ)か、書き込みに似ている(ディスク上のデータを変更する-書き込み、削除、フォーマットなど)かどう かをコールバックパラメーター(または他の場所)からどのように知ることができますか?

主要なIRPコードのリストは次のとおりです

私は次のようなことを考えています:

しかし、よくわかりません。これらは、操作後のコールバックでのみ使用できると思います。ドキュメントは本当に面倒です。

さらに明確にするためのコードサンプル:

0 投票する
1 に答える
258 参照

function - NTDDkヘッダーを含めることができません

ヘッダーを<ntddk.h>含めようとしていますが、再構成されていません。プロジェクトの設定を変更する必要がありますか?

0 投票する
2 に答える
3321 参照

c++ - MinGW を使用した Windows DDK 開発?

Visual Studio を使用せずに Windows ドライバー (具体的には、実際に印刷する代わりにデータを画面に表示する PDF のようなプリンター ドライバー) を開発することは可能ですか? MinGW/gcc などの無料の C++ ツールを使用することを考えています。

0 投票する
1 に答える
3044 参照

c - 32 ビット Windows ドライバーを 64 ビット Windows に移植する

ALT+F4私たちのアプリケーションはフルスクリーン モードで実行されるため、などのキーに対するユーザー入力を無効にするキーボード フック ドライバーを開発しましたCTRL+ALT+DEL

ドライバーは、Windows Driver Kit を使用して C で開発されています。

32 ビット用にコンパイルすると、Windos 7 32 ビットにドライバーが読み込まれ、期待どおりに動作します。

64 ビット用のコンパイルは機能し、Windows 7 64 ビットではドライバーをロードしません (ただし、署名されており、キーボード ドライバーにリストされています)。

SetEnv設定は次のとおりです。

足りないものはありますか?

64 ビットで動作させるために、コードに特定の変更を加える必要がありますか?

0 投票する
3 に答える
2297 参照

c# - 印刷ジョブの受け入れとルーティング ソフトウェア

他のコンピュータからの印刷ジョブを受け入れ、それらの印刷ジョブをプリンタが接続された LAN 上の PC にルーティングできるソフトウェアを作成したいと考えています。

どのように起こるか -> 1- 「仮想プリンター」と呼ばれるそのソフトウェアがコンピューター「X」にインストールされている場合、Windows はそれがそのコンピューターに接続されているプリンタードライバー/プリンターであると見なす必要があります。2- 次に、その PC の管理者が Windows の [デバイスとプリンター] に移動し、[仮想プリンター] を選択し、右クリックしてプロパティを表示し、[このプリンターを共有する] チェックボックスを選択します。コンピューター「X」に接続された LAN には共有プリンター呼び出し「仮想プリンター」があります。 4- 何かを印刷する必要があるときに「仮想プリンター」を選択することで、この「仮想プリンター」に印刷ジョブを送信できます。

このプログラム (おそらく c#) を記述して、それ自体を Windows にプリンターとして表示し、着信印刷ジョブを受け入れて、プリンターが接続されている目的のコンピューターに送信するにはどうすればよいですか。

このことをコーディングする方法がわかりません。また、知識もありません。いくつかのリソース、コード、サンプル プロジェクト、または少なくともこれに似たサンプルを手伝ってください。ありがとう

0 投票する
1 に答える
18234 参照

visual-c++ - WDK (Windows Driver Kit) および VC++ ヘッダーの問題

USB HID デバイスから読み込もうとしています。DLLImport hid.dll を使用して C# で実行する方法は知っていますが、C++ から実行したいので、すべての構造体を宣言する必要がありません。ヘッダーファイルを含めるだけです。

そのため、 WDKをダウンロードし、ヘッダー ファイルを含めてライブラリをリンクすると、多くのエラーが発生します。

エラー (163 のうち 6):

OK、Windows SDKもアップグレードする必要があることをどこかで読みました。Microsoft Windows SDK v6.0Aがあり、Windows SDK v7.0をダウンロードしてインストールしました。しかし、今では 2 つの SDK があるように見えますか? Visual Studio で SDK のアップグレードを適切に行うにはどうすればよいですか?

大変お世話になりました。

ありがとう、カルロス

0 投票する
7 に答える
1833 参照

c - Programmer Dvorak をコンパイルするにはどうすればよいですか?

オープン ソース プロジェクトProgrammer Dvorakをコンパイルしようとしています。問題は、それが少し古く、現在のバージョンのビルド ツールでビルドできないことです。

私のプロジェクトの Google コード ページで、私がオンラインで行った変更を含む完全なソース コードを確認できます。リビジョン 2は、元のプロジェクトから変更されていないソース ファイルです。リビジョン 3では、すべての重要な変更を行いました。ここで 2 つのリビジョンの違いを確認できます。

残っている唯一の明らかな問題は、いくつかの LINK 警告です。

  • LNK4254 (例) -ここsection '.edata' (40000040) merged into '.data' (C0000040) with different attributes.でスタンドアロン版の質問をしました。
  • LNK4210 (例.CRT section exists; there may be unhandled static initializers or terminators)

これらの警告を修正するにはどうすればよいですか? それらを無視できますか?

これらの警告にもかかわらず、それでも exe が生成されます。ただし、先に進んで実行すると、正しくインストールされず、公式バージョンを再度インストールするためにシステムの復元に頼る必要があります.

これは、警告が原因であるか、単にプロジェクトを正しく変更しなかったことが原因である可能性があります。

このプロジェクトをインストール可能にするには、他に何をする必要がありますか?


ビルド プロセス (および私の変更の説明):

Windows DDK が必要と書いてありますが、Windows Driver Kitに置き換わったようですので、代わりに入手しました。「ビルド環境」のみをインストールしました。

1. によるとReadme.txt、以下を実行する必要があります。

2.build-layout.bat実行されます。

このファイルを変更する必要がありました (ここの差分を参照してください)。

  • WinDDK新しいバージョン(MOD-1)を持っているため、パスが変更されました。
  • set PATH=...そこにある%WINDDK%\bin\x86\x86;ので追加されました(MOD-2)link.exe
  • では、フォルダーが存在しないため、set INCLUDE=%WINDDK%\inc\wxp変更されました。私の推測では、(MOD-3)を使用する が含まれているため、フォルダーが必要でした。%WINDDK%\inc\apiwxpapikbd.hkbddvp.c
  • set LIB=%WINDDK%\lib\crtに変更されたため%WINDDK%\lib\crt\i386libcmt.libが検出されました。以下の MOD-7 を参照してください。(MOD-4)

3.fkbddvp.mak実行されます。

このファイルを変更する必要がありました (ここの差分を参照してください)。

  • 変数のパスCL32が から に変更され$(WINDDK)\bin\x86\cl.exeまし$(WINDDK)\bin\x86\x86\cl.exeた。最初の .exe は存在しません。代わりに使用するはずの .exe だと思います。(MOD-5)
  • 変数のパスが からにCL64変更されました。これが、不足している .exe がどこにあるかについての私の最善の推測です。(MOD-6)$(WINDDK)\bin\win64\x86\amd64\cl.exe$(WINDDK)\bin\x86\amd64\cl.exe
  • -opt:nowin98Bobby によって提案されているように、警告LNK4224 (つまり/OPT:NOWIN98 is no longer supported)を抑制するために削除されました。(MOD-10)
  • 存在しない を使用する代わりに、 を使用しlibc.libていlibcmt.libます。代わりにこのファイルを使用することを推奨するこの投稿を読みました。(MOD-7)
  • 古い utility を使用する代わりに、withcabarcを使用しています。この新しいユーティリティで同じロジックを実行する方法について、最善の推測をしました。(MOD-8)makecabmakecab-dir.ddf

4.build-installer.bat実行されます。

このファイルを変更する必要がありました (ここの差分を参照してください)。

  • これも を使用cabarcしていましたが、MOD-8 と同様に を使用するように変更しましmakcabたが、プログラムで .ddf ファイルを作成する点が異なります。(MOD-9)

完全な出力

見たい場合は、完全な出力を次に示します。

0 投票する
3 に答える
23040 参照

c - Windows DDKの「NTSTATUS」、「NT_SUCCESS」typedefを理解するにはどうすればよいですか?

2つの質問:

1.1。

「ntdef.h」では、NTSTATUSは次のように定義されています。

「__success(return> = 0)」とは一体何ですか?

2.2。

「ntstatus.h」では、STATUS_SUCCESSが0に定義されています。

ただし、「ntdef.h」のNT_SUCCESSマクロは次のとおりです。

「ステータス==0」ではないですか?

0 投票する
1 に答える
1070 参照

process - WDK : name.exe で processId を取得

Windows Filtering Platform でドライバーを開発していますが、必要なことを行うには別のプロセスのプロセス ID が必要です。そのプロセスのファイル名 (name.exe) しかわかりません。

win32 では、関数CreateToolhelp32Snapshotを使用してすべてのプロセスのリストを取得し、そこで PID を検索できました。( http://msdn.microsoft.com/en-us/library/ms684834(VS.85).aspx )

残念ながら、カーネル モードでは、この機能は利用できません。カーネル空間で、バイナリ名のみを知っているプロセスIDを取得する方法を知っている人はいますか?

ありがとう、マルコ

0 投票する
1 に答える
255 参照

c++ - プリンタードライバーの開発 - 32 ビットから 64 ビットへ

32 ビット システム用にコンパイルされたドライバーを開発しました。ドライバーは unidriver ベースです。

64ビットと互換性のあるドライバーを取得するために何が必要かを知っている人はいますか? コードにどのような変更を加える必要がありますか? それとも、64ビットバージョンのDDKでコンパイルするだけの問題ですか?

前もって感謝します。

ヌーノ