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

sco*_*ott 1 c++ winapi named-pipes

我创建了一个使用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);
Run Code Online (Sandbox Code Playgroud)

我不确定我做错了什么.

hmj*_*mjd 6

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

lpBuffer [out]

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

纠正:

char buffer[10];
Run Code Online (Sandbox Code Playgroud)