カスタム デバイス ドライバー、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) がないままです。
CreateFile()
ReadFile()
WriteFile()
DeviceIoControl()
CloseHandle()
特に、ユーザーの操作なしで (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 のコードや設計を使用または聞いたことがある人はいますか?