- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
有没有什么方法可以在不创建新线程的情况下使用 APC 完成例程异步读取和写入控制台?就像命名管道一样。
问题是在控制台的情况下,FILE_FLAG_OVERLAPPED
被 CreateFile
函数忽略。
编辑。这是为了澄清,我想做什么。Windows 提供函数 ReadFileEx
和 WriteFileEx
来处理 Asynchronous Procedure Calls .这些函数的文档说明了参数 hFile
:
This parameter can be any handle opened with the FILE_FLAG_OVERLAPPED flag by the CreateFile function<...>
然后,CreateFile
的文档说,如果将 CONIN$
或 CONOUT&
传递给它们,则 FILE_FLAG_OVERLAPPED
是忽略。
确实,当我尝试执行以下顺序时:
HANDLE h = GetStdHandle(STD_OUTPUT_HANDLE);
if(!WriteFileEx(h, ...)) {
auto errorCode = GetLastError(); //I get 6 here
}
...我收到错误代码 6 - ERROR_INVALID_HANDLE
。如果使用命名管道而不是控制台句柄,一切都会完美无缺。
所以我的问题是是否有某种方法可以使 ReadFileEx
和 WriteFileEx
与控制台句柄一起工作。
最佳答案
Windows 10:
是的。您可以使用 CONIN$
或 CONOUT$
和 FILE_FLAG_OVERLAPPED
标志调用 CreateFile
,一切都会正常工作。
Windows 7:
没有。控制台不支持重叠操作。
如果您有使用 ReadFileEx/WriteFileEx 的现有代码并且不希望重写它,您可以将命名管道句柄传递给它并让另一个线程(或进程)在命名管道的另一端和实际进程之间传递数据安慰。性能不是问题,因为控制台 I/O 无论如何都很慢,所以涉及一个单独的线程并没有真正的危害。
关于c - Windows 中带有控制台句柄的 ReadFileEx 和 WriteFileEx,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44834951/
我设置了 Helm 柄和 Helm 柄。我有tiller-deploy。昨天,我可以定期运行了。但今天我收到此错误消息 Error: could not find a ready tiller pod
我以前已将分er安装到特定的 namespace 中。 我设置了一个环境变量来设置'tiller'命名空间-但我不记得该环境变量的名称-而且似乎无法通过网络搜索找到它。 这是什么 key ? 最佳答案
当我在 View 模型中使用如下界面时 class MainViewModel @ViewModelInject constructor( private val trafficImagesR
我正在尝试找到如何在某个 fragment 相关场景中定义 Hilt 的解决方案。我有以下设置: Activity 父 fragment 1 子 fragment 1 子 fragment 2 ...
Hilt 指出如果没有@Provides 注解就不能提供这个接口(interface): interface PlannedListRepository { fun getAllLists()
我的问题非常简单明了:两个注释/示例之间有什么区别: 例子一 @Singleton class MySingletonClass() {} @Module @InstallIn(FragmentCom
我是一名优秀的程序员,十分优秀!