Нельзя использовать для инициализации сущности типа "LPSTR"

Как исправить ошибку: значение типа "сonst char *" нельзя использовать для инициализации сущности типа "LPSTR" (ругается на имя канала)

#include <Windows.h>
#include <conio.h>
#include <iostream>



int main()
{
    // Флаг успешного создания канала
    BOOL   fConnected;

    // Идентификатор канала Pipe
    HANDLE hNamedPipe;

    // Имя создаваемого канала Pipe
    LPSTR  lpszPipeName = "\\\\.\\pipe\\$MyPipe$";

    // Буфер для передачи данных через канал
    char   szBuf[512];

    // Количество байт данных, принятых через канал
    DWORD  cbRead;

    // Количество байт данных, переданных через канал
    DWORD  cbWritten;

    printf("Named pipe server demo\n"
        "(C) A. Frolov, 1996, Email: [email protected]\n");

    // Создаем канал Pipe, имеющий имя lpszPipeName
    hNamedPipe = CreateNamedPipe(
        lpszPipeName,
        PIPE_ACCESS_DUPLEX,
        PIPE_TYPE_MESSAGE | PIPE_READMODE_MESSAGE | PIPE_WAIT,
        PIPE_UNLIMITED_INSTANCES,
        512, 512, 5000, NULL);

Ответы (1 шт):

Автор решения: Harry

Попробуйте

char lpszPipeName[] = "\\\\.\\pipe\\$MyPipe$";

Дело в том, что LPSTR — это char*, т.е. указатель на изменяемую строку, а "\\\\.\\pipe\\$MyPipe$" — литерал, т.е. строка неизменяемая...

→ Ссылка