다른 응용 프로그램간에 메모리를 공유하는 DLL을 만듭니다.CreateFileMapping() name
는공유 메모리를 생성하는 코드는 다음과 같습니다 : 그것은 작동하지 않습니다
#define NAME_SIZE 4
HANDLE hSharedFile;
create(char[NAME_SIZE] name)
{
hSharedFile = CreateFileMapping(INVALID_HANDLE_VALUE, NULL, PAGE_READWRITE, 0, 1024, (LPCSTR)name);
(...) //Other stuff that maps the view of the file etc.
}
. 내가 문자열로 name
을 대체 그러나 경우에 작동합니다 :
SharedFile = CreateFileMapping(INVALID_HANDLE_VALUE, NULL, PAGE_READWRITE, 0, 1024, (LPCSTR)"MY_TEST_NAME");
가 어떻게이 char 배열 작업을 얻을 수 있나요?
나는 항상 문자열을 사용할 Java 배경을 가지고 있는데, LPCSTR은 무엇입니까? 그리고 이것은 내 MS VC++ 프로젝트 Unicode
을 사용하는지 여부에 관계 또는 Multi-Byte
문자를 사용하면 문서를 보면, 대부분의 Win32 함수가 TCHAR
의 문자열을 나타내는 LPCTSTR
를 취할 것을 찾을 수 있습니다
문자 배열 ('name') 당신은'create'에 전달하는 가치는 무엇인가처럼 마지막에 '\ 0'을 추가해야 배열로 상수 문자열을 전달하는 경우? 실패했을 때'CreateFileMapping'의 리턴 값과 에러 코드 ('GetLastError'로 얻을 수 있습니다)는 무엇입니까? –
함수를 만들기 위해 매개 변수로 무엇을 전달합니까? – Elalfer
{ 'T', 'E', 'S', 'T'}를 전달하고 있지만 실패하지는 않지만 나중에 다른 앱에서 공유 메모리 공간을 열 수 없습니다. – sigvardsen