問題タブ [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.
winapi - WindowsのLinux sync_file_rangeシステムコールと同等ですか?
メタデータ (ファイルサイズなど) を強制的にフラッシュせずに、ファイルに追加したバイトの範囲を fsync する必要があります。
c - 関数で参照されている未解決の外部シンボル _wcstok
エラーメッセージ:
エラー LNK2019: 関数で参照されている未解決の外部シンボル _wcstok
しかし。wcslen
作品
c++ - Windows カーネル ドライバーでカーネル空間からユーザー空間と "4Go - PAGE_SIZE" を超えるバッファーを共有する
私は現在、Windowsの内部をよりよく理解するために、Windowsカーネルドライバーをいじっています。Toy Project として、プロセス間で共有できるメモリを割り当てる役割を持つカーネル ドライバーを作成しました。
アプリケーションは、任意のサイズのメモリ バッファーを作成するようドライバーに要求できます。次に、ドライバーは MmAllocatePagesForMdl を使用して KernelSpace にこのバッファーを作成し、 MmMapLockedPagesSpecifyCache を使用してユーザー モードでこのバッファーをマップします。結果のポインタはアプリケーションに返され、通常のバッファと同じように直接書き込むことができます。次に、別のアプリケーションがドライバにこのメモリへのアクセスを要求して、メモリを読み取る (または書き込む) ことができます。ドライバーは、新しいプロセスのコンテキストで既存のバッファーに対して MmMapLockedPagesSpecifyCacheを呼び出すだけです。これまでのところ、すべてが非常にうまく機能しています。
この小さな成功の後、カーネル空間により大きなバッファを作成したいと思い、壁にぶつかりました。MDL は「4Go - PAGE_SIZE」までしか管理できません。
私の最初のアイデアは、サイズ要求を満たすまでMmAllocatePagesForMdlを使用していくつかの MDL を作成し、 Nextポインターを使用して MDL をチェーンし、次にMmMapLockedPagesSpecifyCacheを使用してポインターをユーザー空間に返すことでした。しかし、MmMapLockedPagesSpecifyCacheは連鎖 MDL では機能せず、最初の MDL をユーザー空間にマップするだけです。
これまでのところ、4Go を超える連続仮想メモリをカーネル空間からユーザー空間に返す方法は見つかりませんでした。ページングされたメモリを使用するため、カーネル空間での割り当ては問題ではありません。物理メモリは連続している必要はありませんが、それらを連続した仮想メモリにマップしてユーザー空間で使用する方法が見つかりません。
だから私は貪欲になり、それは不可能ですか?それとも、それを行うために何かを逃しましたか?
参考までに、これは 64 ビット専用のドライバーと 64 ビット アプリケーションであるため、ここでは 32 ビットの制限はありません。
certificate - WinVerifyTrust は、有効な (読み込まれた) ドライバーに対して CERT_E_UNTRUSTEDROOT を返します。
次のコード スニペットでは、WinVerifyTrust は、システムに読み込まれて実行されているカーネル ドライバー ファイル (.sys) に対して CERT_E_UNTRUSTEDROOT を返します。
いくつかの興味深い点: - ドライバーは、SHA-256 を使用して有効な (購入した) 証明書で署名されています。- KB3033929 がシステムにインストールされている (Win7/32) - ファイルのプロパティから証明書を表示すると、証明書チェーン全体が有効であると表示される
WinVerifyTrust の呼び出しは間違っていますか?
別の質問: SHA-256 ベースのコード署名検証がターゲット システムで利用可能であることを (レジストリ キーなどの存在によって) 知る別の方法はありますか? (インストール中にこれを確認する必要があります...)
ありがとう :)
windows - Windows カーネルで使用可能な C++11 の量
最新の WDK は、C++11 をサポートする Visual Studio 15 で使用するために提供されます。
ただし、どの程度の機能が使用できるかについてのドキュメントは見たことがありません。
明らかに、私はstd::thread
andを使用しませんstd::mutex
が、あまり明確ではありませんが、マジック スタティックスです。
これはユーザーモードでスレッドセーフになりましたが、この構造がカーネルで機能するかどうかは不明です。
さらに懸念されるのは、C++11 より前のコードがカーネルで許容されていたということです (デストラクタが自明であると仮定すると)。
driver - Reading file in pre-cleanup stage in a deferred work item
I writing a Windows Minifilter Driver which needs to read the entire file (only files with size up to a specific threshold) on IRP_MJ_CLEANUP. As FltReadFile may not be called from the preop callback I queued the job to a work queue and did it there. When I finish reading the file I call FltCompletePendedPreOperation and invoke the post-cleanup callback which also handles the post operation as deferred work. Here are snippets of my code:
This proves to work for a while but the system seems to hang (deadlock?) after a while. The problem seems to be with the call to FltReadFile since the hang does not occur when removing this call. Any ideas on why this might happen or how to debug it further?