1

我正在 Windows 10 上开发一个与自定义设备驱动程序、NTFS 文件系统和 DirectX 12 交互的应用程序。该应用程序是一个用 C++、WRL、XAML 和 DirectX 编写的 Windows 通用应用程序。对于 DirectX,我选择了 SwapChainPanel 控件,应用程序的 DirectX 部分运行良好。该应用程序是侧载的,所以我比需要通过商店的应用程序有更多的自由

不幸的是,Windows 通用应用程序在 API 调用方面有许多限制。WinRt API 受到青睐。

以下是要调用以替换 Win32 API 的 WinRt API 列表:

https://msdn.microsoft.com/en-us/library/windows/apps/hh464945.aspx

此外,Windows 通用应用程序可以调用分区到应用程序的 Win32 API(但不是分区到桌面的 API),如每个函数的文档和头文件中所示。这是一个链接:

https://msdn.microsoft.com/en-us/library/windows/apps/br205762.aspx

此外,Windows 通用应用程序现在允许 Winsock API

但是我仍然没有我最喜欢的(和必要的 API)

CreateFile()
ReadFile()
WriteFile()
DeviceIoControl()
CloseHandle()

特别是我需要在没有用户交互的情况下将文件读写到所有位置(而不是 Windows 通用应用程序沙盒限制的位置)。此外,我需要将 IOCTL 发送到我的多个设备驱动程序。

我可以放弃 Windows 通用应用程序并使用 WPF。但是我有一个触摸密集型应用程序,我需要触摸才能很好地工作。此外,我不得不怀疑缺少修复和代表 Microsoft 对 WPF 的承诺。我考虑过其他 UI 框架,但没有一个像 Windows 通用应用程序那样有前途。

Microsoft 在 Windows 10 中为通用应用程序提供了两条路径,允许调用所有 Win32 函数(用于侧载应用程序)。

通过 TCPIP 代理 Windows 运行时组件和 IPC

我编写了一个代理的 Windows 运行时组件,它运行良好。但是,该解决方案需要混合使用 C# 应用程序,我不需要/不希望这样做,因为我需要应用程序的快速加载时间并且不想拉入 CLR。

下一个选项是通过 TCPIP 的 IPC。我将按照博客文章中的说明使用快速 TCP 环回:Windows Server 2012 TCP 环回快速路径的快速 TCP 环回性能和低延迟。我会链接到它,但我在第一篇文章的(非常慷慨的)两个链接限制。

我有一些问题:

1)如果我走这条路,我应该将 IPC 放在 XAML 控件/按钮和应用程序的其余部分之间吗?这将允许应用程序的其余部分严格使用 Win32。或者我应该只是将 IPC 放在应用程序和调用我需要的特定功能之间,这些功能不在 Win32 允许的范围内。

2) 我一直在寻找具有使用 TCPIP 实现 IPC 的代码和/或想法的库或论文。然而到目前为止,讨论 IPC 和 TCPIP 的论文似乎只是简单地描述了我已经知道如何做的 winsock 编程。我会喜欢编写 IPC 代码,但更喜欢经过测试的解决方案。这需要完美地工作,我宁愿有一些时间的代码。有没有人使用或听说过可以共享的 IPC over TCPIP 的代码和/或设计?

4

0 回答 0