获取错误代码 998 尝试从命名管道读取时对内存位置的访问无效

getting error code 998 Invalid access to memory location when trying to read from named pipe

本文关键字:内存 位置 无效 访问 读取 管道 错误代码 从命 获取      更新时间:2023-10-16

我使用 WCF 和 C# 创建了一个命名管道,并创建了一个客户端来连接到它,以便我知道它正在正常工作。 现在我正在尝试创建一个 c++ 客户端。 到目前为止,我已经能够获取管道的名称,连接到它,并向它写入一些数据。 当我尝试从中阅读时,我得到了error code 998 Invalid access to memory location. 这是我正在使用的代码:

HANDLE hPipe = CreateFile(pipeName.c_str(), GENERIC_WRITE | GENERIC_READ, 2, NULL, OPEN_EXISTING, NULL, NULL);
BOOL bWrite = WriteFile(hPipe, &message, size, &bytesWritten, NULL);
LPVOID buffer = 0;
DWORD bytesRead;
BOOL bRead = ReadFile(hPipe, buffer, 10, &bytesRead, NULL);

不确定我做错了什么。

没有为buffer分配内存,它当前是一个空指针,并且代码请求将 10 字节的数据读入不存在的数组中。从ReadFile()

lpBuffer [out]

指向接收从文件或设备读取的数据的缓冲区的指针。

要纠正:

char buffer[10];