問題タブ [kmdf]
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 - Universal Drivers は、Windows 10 の Universal Apps 内で実行されますか?
KMDF ドライバーをユニバーサル アプリに統合する方法を知りたいです。現在、デスクトップ アプリケーションで使用されている KMDF ドライバーをユーザーにダウンロードしてもらっています。ユニバーサル アプリに移行すると、ドライバーはどのように使用できるようになりますか? 「ユニバーサル ドライバー」は「ユニバーサル アプリ」で実行できるという意味ですか? 電話または xbox はどのようにドライバーをダウンロードしますか?
これが私の研究から得られたものだと思います:
これは、Microsoft デバイス (デスクトップ、電話、タブレット、Xbox) で実行できるという事実に関連しています。ただし、これらのデバイスは UWP (ユニバーサル Windows プラットフォーム) である必要があります。つまり、少なくとも Windows 10 が必要です。
Universal Driver と Universal App は 2 つの別個のものです。ユニバーサル アプリはユニバーサル ドライバーを実装できますが、KMDF ドライバーも実装できます (ただし、Windows 10 デスクトップ アプリケーションのみ)。Universal Driver は、WPF アプリケーションで使用できます (ただし、Windows 10 デスクトップのみ)。
アプリケーションをユニバーサル アプリに変更し、ドライバーをユニバーサルに変更すると、どのプラットフォームでもアプリを使用できるようになります。
これは正しいです?
デスクトップ以外の何かがユニバーサルドライバーを実行する方法はまだわかりません。
windows - 下位フィルター ディスク ドライバーの内部デバイス制御要求の完了ルーチンを適切に登録する方法を教えてください。
私は現在、SCSI コマンドをキャプチャし、各コマンドのパフォーマンスを測定するための下位フィルター ディスク ドライバーを作成しています。現在、私のドライバーは SCSI 要求をキャプチャし、それを次のドライバーに渡すことができます。ただし、完了ルーチンを登録しようとすると、次のステータスが表示されます: 0xc0000010(STATUS_INVALID_DEVICE_REQUEST)。
完了ルーチンのない作業コード:
完了ルーチンで失敗したコード:
どんな助けでも大歓迎です。ありがとう。
ノート:
- WdfRequestSend() は失敗したルーチンです。
- 上部フィルター ディスク ドライバーの場合、完了ルーチンを含むコードが機能します。
driver - WdfIoTargetSendIoctl同期 & ATA
ATA_PASS_THROUGH_EX32 構造体と IOCTL_ATA_PASS_THROUGH IoControlCode を使用して、WdfIoTargetSendIoctlSynchronously 経由で raw ATA コマンドを送信しようとしました。私が気付いたのは、IOCTL_DISK_GET_DRIVE_GEOMETRY 以外のコマンドは、KMDF ドライバー内から失敗したように見えることです。
標準の 32 ビット実行可能ファイルをビルドし、IOCTL_ATA_PASS_THROUGH を問題なく使用できます。ドライバーは、WdfIoTargetSendIoctlSynchronously の NTStatus 戻り値から、STATUS_INVALID_PARAMETER 以外のエラーを取得しません。
誰にもアイデアはありますか?
実行した手順:
- WdfIoTargetCreate
- WdfIoTargetOpen
- WdfRequestCreate
- WdfMemoryCreate -> WDF_MEMORY_DESCRIPTOR_INIT_BUFFER -> ATA_PASS_THROUGH_EX32
- WdfMemoryCreate -> WDF_MEMORY_DESCRIPTOR_INIT_BUFFER -> OutputBuffer
- WdfIoTargetSendIoctl同期的に
windows-7 - VS Community 2015. デバッガーは、Windows 7 のサンプル ドライバーに割り込むことができません。シリアル接続
私は、単純な Windows ドライバーを作成し、VS からデバッグするこの例に取り組んでいます。
https://msdn.microsoft.com/en-us/library/windows/hardware/hh439665(v=vs.85).aspx
マイセットアップ
ホスト: Windows 7 物理システム
ターゲット: Windows 7 物理システム
- 接続タイプ: シリアル ケーブル (ホストでは USB からシリアル、ターゲットではシリアル)
ターゲット システムのプロビジョニングが成功しました。シリアル接続パラメータは正しいです (別のソフトウェアでシリアル接続をテストしました)。ドライバーはビルドされ、ターゲットに正常にインストールされますが、「Break all」コマンドは何もしません。ターゲット内の別のプロセスにアタッチできます。
同様の質問を見たことがありますが、通常の回答は、ホストとターゲットの接続パラメーター間の不一致を確認することです。これを確認しましたが、パラメータは正しいです。
アドバイスをいただければ幸いです。
ありがとう!
c++ - すべての Win32 API の呼び出しを有効にする Windows Universal APP の IPC
カスタム デバイス ドライバー、NTFS ファイル システム、および DirectX 12 と対話する Windows 10 でアプリケーションを開発しています。このアプリは、C++、WRL、XAML、および DirectX で記述された Windows ユニバーサル アプリです。DirectX には SwapChainPanel コントロールを選択しましたが、アプリの DirectX 部分はうまく機能します。アプリはサイドロードされているので、ストアを通過する必要があるアプリよりも少し自由があります
残念ながら、Windows Universal Apps には、API 呼び出しに関して多くの制限があります。WinRt API が好まれます。
Win32 API を置き換えるために呼び出す WinRt API のリストを次に示します。
https://msdn.microsoft.com/en-us/library/windows/apps/hh464945.aspx
さらに、Windows Universal Apps は、各関数のドキュメントとヘッダー ファイルに示されているように、アプリケーションに分割された (ただし、デスクトップに分割されたものではない) Win32 API を呼び出すことができます。ここにリンクがあります:
https://msdn.microsoft.com/en-us/library/windows/apps/br205762.aspx
さらに、Winsock API が Windows Universal Apps から許可されるようになりました
ただし、お気に入りの (および必要な API) がないままです。
特に、ユーザーの操作なしで (Windows ユニバーサル アプリ サンドボックスによって制限された場所ではなく) すべての場所でファイルを読み書きする必要があります。さらに、IOCTL を複数のデバイス ドライバーに送信する必要があります。
Windows Universal Apps を放棄して、WPF を使用することもできます。ただし、タッチを多用するアプリケーションがあり、うまく機能させるにはタッチが必要です。さらに、Microsoft に代わって WPF への修正とコミットメントが不足していることについて疑問に思う必要があります。他の UI フレームワークも検討しましたが、Windows ユニバーサル アプリほど有望なものはありませんでした。
Microsoft は、すべての Win32 関数の呼び出しを許可するユニバーサル アプリ用の Windows 10 で 2 つのパスを許可しています (サイド ロード アプリ用)。
TCPIP を介した Windows ランタイム コンポーネントと IPC の仲介
仲介型の Windows ランタイム コンポーネントを作成しましたが、うまく機能します。ただし、ソリューションにはC#アプリが混在している必要があり、アプリの読み込み時間を短縮する必要があり、CLRを取り込みたくないため、必要ありません。
次のオプションは、TCPIP を介した IPC です。ブログ投稿で説明されているように、Fast TCP Loopback を使用します: Fast TCP Loopback Performance and Low Latency with Windows Server 2012 TCP Loopback Fast Path. 私はそれにリンクしますが、最初の投稿で (非常に寛大な) 2 つのリンク制限に達しています。
いくつか質問があります。
1) このルートに進む場合、XAML コントロール/ボタンとアプリの残りの部分の間に IPC を配置する必要がありますか? これにより、アプリの残りの部分を厳密に Win32 にすることができます。または、アプリと、必要な特定の関数への呼び出しの間に IPC を配置する必要がありますが、これは Win32 で許可されている関数の範囲外です。
2) TCPIP を使用して IPC を実装するためのコードやアイデアが掲載されているライブラリまたは論文を探しました。ただし、これまでのところ、TCPIP を使用した IPC について説明している論文は、私が既に方法を知っている winsock プログラミングについて説明しているだけのようです。私は IPC のコーディングを楽しんでいますが、テスト済みのソリューションを好むでしょう。これは完璧に動作する必要があり、私はコードに少し時間をかけたいと思っています。共有可能な TCPIP を介した IPC のコードや設計を使用または聞いたことがある人はいますか?
c - Visual Studio コミュニティ 2015 & KMD
運動のためのKMDプロジェクトに取り組み始めました。空の KMDF プロジェクトを開き、km コンポーネントの作成を開始しました。ユーザー モード コンポーネントを追加したいのですが、両方の部分を含む新しいプロジェクトを開く必要がありますか、それとも KMDF プロジェクトにユーザー モード コンポーネントを追加する方法はありますか?