問題タブ [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.
windows - Windows I/Oマネージャー-読み取りのようなものと書き込みのようなものでのIRPの分類
タイプ(読み取り/書き込み)に基づいた操作前のコールバックでI / O要求パケット(IRP)を失敗させる必要があるWindowsファイルシステムミニフィルタードライバーを作成しています。操作が読み取りに似ている(データを読み取るだけ)か、書き込みに似ている(ディスク上のデータを変更する-書き込み、削除、フォーマットなど)かどう
かをコールバックパラメーター(または他の場所)からどのように知ることができますか?
主要なIRPコードのリストは次のとおりです。
私は次のようなことを考えています:
しかし、よくわかりません。これらは、操作後のコールバックでのみ使用できると思います。ドキュメントは本当に面倒です。
さらに明確にするためのコードサンプル:
function - NTDDkヘッダーを含めることができません
ヘッダーを<ntddk.h>
含めようとしていますが、再構成されていません。プロジェクトの設定を変更する必要がありますか?
c++ - MinGW を使用した Windows DDK 開発?
Visual Studio を使用せずに Windows ドライバー (具体的には、実際に印刷する代わりにデータを画面に表示する PDF のようなプリンター ドライバー) を開発することは可能ですか? MinGW/gcc などの無料の C++ ツールを使用することを考えています。
c - 32 ビット Windows ドライバーを 64 ビット Windows に移植する
ALT+F4
私たちのアプリケーションはフルスクリーン モードで実行されるため、などのキーに対するユーザー入力を無効にするキーボード フック ドライバーを開発しましたCTRL+ALT+DEL
。
ドライバーは、Windows Driver Kit を使用して C で開発されています。
32 ビット用にコンパイルすると、Windos 7 32 ビットにドライバーが読み込まれ、期待どおりに動作します。
64 ビット用のコンパイルは機能し、Windows 7 64 ビットではドライバーをロードしません (ただし、署名されており、キーボード ドライバーにリストされています)。
SetEnv
設定は次のとおりです。
足りないものはありますか?
64 ビットで動作させるために、コードに特定の変更を加える必要がありますか?
c# - 印刷ジョブの受け入れとルーティング ソフトウェア
他のコンピュータからの印刷ジョブを受け入れ、それらの印刷ジョブをプリンタが接続された LAN 上の PC にルーティングできるソフトウェアを作成したいと考えています。
どのように起こるか -> 1- 「仮想プリンター」と呼ばれるそのソフトウェアがコンピューター「X」にインストールされている場合、Windows はそれがそのコンピューターに接続されているプリンタードライバー/プリンターであると見なす必要があります。2- 次に、その PC の管理者が Windows の [デバイスとプリンター] に移動し、[仮想プリンター] を選択し、右クリックしてプロパティを表示し、[このプリンターを共有する] チェックボックスを選択します。コンピューター「X」に接続された LAN には共有プリンター呼び出し「仮想プリンター」があります。 4- 何かを印刷する必要があるときに「仮想プリンター」を選択することで、この「仮想プリンター」に印刷ジョブを送信できます。
このプログラム (おそらく c#) を記述して、それ自体を Windows にプリンターとして表示し、着信印刷ジョブを受け入れて、プリンターが接続されている目的のコンピューターに送信するにはどうすればよいですか。
このことをコーディングする方法がわかりません。また、知識もありません。いくつかのリソース、コード、サンプル プロジェクト、または少なくともこれに似たサンプルを手伝ってください。ありがとう
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 のアップグレードを適切に行うにはどうすればよいですか?
大変お世話になりました。
ありがとう、カルロス
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\api
wxp
api
kbd.h
kbddvp.c
set LIB=
が%WINDDK%\lib\crt
に変更されたため%WINDDK%\lib\crt\i386
、libcmt.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:nowin98
Bobby によって提案されているように、警告LNK4224 (つまり/OPT:NOWIN98 is no longer supported
)を抑制するために削除されました。(MOD-10)- 存在しない を使用する代わりに、 を使用し
libc.lib
ていlibcmt.lib
ます。代わりにこのファイルを使用することを推奨するこの投稿を読みました。(MOD-7) - 古い utility を使用する代わりに、with
cabarc
を使用しています。この新しいユーティリティで同じロジックを実行する方法について、最善の推測をしました。(MOD-8)makecab
makecab-dir.ddf
4.build-installer.bat
実行されます。
このファイルを変更する必要がありました (ここの差分を参照してください)。
- これも を使用
cabarc
していましたが、MOD-8 と同様に を使用するように変更しましmakcab
たが、プログラムで .ddf ファイルを作成する点が異なります。(MOD-9)
完全な出力
見たい場合は、完全な出力を次に示します。
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」ではないですか?
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を取得する方法を知っている人はいますか?
ありがとう、マルコ
c++ - プリンタードライバーの開発 - 32 ビットから 64 ビットへ
32 ビット システム用にコンパイルされたドライバーを開発しました。ドライバーは unidriver ベースです。
64ビットと互換性のあるドライバーを取得するために何が必要かを知っている人はいますか? コードにどのような変更を加える必要がありますか? それとも、64ビットバージョンのDDKでコンパイルするだけの問題ですか?
前もって感謝します。
ヌーノ