0

一段时间以来,我一直在为 VB6 命名管道而苦苦挣扎。这条线在很大程度上是有效的:

CallNamedPipe(szPipeName, Header(0), 2, bArray(0), numBytes, cbRead, 30000)

管道服务器确实收到了写入的 2 个字节。但是这个功能不是我想要使用的。我需要使用 CreateFile() + WriteFile() 组合。现在我无法让这个工作:

pipeHandle = CreateFile(szPipeName, GENERIC_READ Or GENERIC_WRITE, 0, 0, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0&)

它返回-1,表示失败。没有其他任何改变,所以我不明白为什么它会失败。然后我在现有文件 C:\test.txt 上尝试了它:

pipeHandle = CreateFile("C:\\test.txt", GENERIC_READ Or GENERIC_WRITE, 0, 0, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0&)

它仍然失败并返回-1。

我使用 CreateFile() 错误吗?

4

1 回答 1

0

问题都解决了。这是一个 Unicode/ANSI 问题。文件/管道名称字符串未正确解析。请改用 CreateFileA。

于 2011-05-26T03:40:37.993 回答