@NikitaWeb

Как избежать ошибки в CreateFileMapping?

Есть такой код:
#include <windows.h>
#include <stdio.h>
#include <string.h>

void main()
{
 int i,l;
 HANDLE s,h;
 char *buffer;
 char buf[]="abcdefghijklmno";
 char tow[]="Text, writed to memory";
 if ((h=CreateFileMapping((HANDLE)0xFFFFFFFF,NULL,PAGE_READWRITE,0,1024,"mem"))==NULL)
	{
	 printf("Can't create file mapping\n");
        }
 printf("Handle: %d\n",h);
 if ((buffer=MapViewOfFile(h,FILE_MAP_WRITE | FILE_MAP_READ,0,0,1024))==NULL)
	{
         printf("Can't MapViewOfFile\n");
	}
 s=CreateMutex(NULL,1,"sem");
 Sleep(10000);
 printf("Write to buffer first time\n");
 for (i=0;i<strlen(tow)+1;i++) buffer[i]=tow[i];
 if (ReleaseMutex(s)) {printf("Release mutex\n");}
 printf("From buffer: %s\n",buffer);
 printf("Write to buffer second time\n");
 for (i=0;i<3;i++)
	{
	 printf("Writed: %c\n",buf[i]);
	 buffer[i*400]=buf[i];
	}
 Sleep(10000);
 CloseHandle(s);
 CloseHandle(h);
}

При его выполнении вот такой результат:5e64ca36b318c151559530.png
Что нужно убрать/добавить чтобы код заработал? GetLastError() выдает 6.
  • Вопрос задан
  • 1075 просмотров
Решения вопроса 1
@NikitaWeb Автор вопроса
(HANDLE)0xFFFFFFFF заменить на INVALID_HANDLE_VALUE. Проблема в 64-битной версии Windows
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Вообще-то, код рабочий, проверил на Windows 10.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы