Всем привет!
Подскажите, пожалуйста, почему в службе я создаю проекцию, но не могу открыть её в другом приложении??? Хотя если таким же образом создаю проекцию в другом приложении и открываю - работает!! ( То есть, не работает только при схеме взаимодействия СЛУЖБА->ПРИЛОЖЕНИЕ)
Код создания проекции в службе:
| Код | // Настройка дескриптора защиты в службе PSECURITY_DESCRIPTOR pSD; SECURITY_ATTRIBUTES sa;
// Выделяем из кучи указанное число байт pSD = (PSECURITY_DESCRIPTOR) LocalAlloc(LPTR, SECURITY_DESCRIPTOR_MIN_LENGTH);
if (pSD == NULL) { return 1; }
// Инициализируем дескриптор защиты if (!InitializeSecurityDescriptor(pSD, SECURITY_DESCRIPTOR_REVISION)) { return 1; }
// Устанавливаем дескриптор защиты if (!SetSecurityDescriptorDacl(pSD, TRUE, (PACL) NULL, FALSE)) { return 1; }
sa.nLength = sizeof(sa); sa.lpSecurityDescriptor = pSD; sa.bInheritHandle = TRUE;
HANDLE hMapFile; ReadFileParam *pBuf; // структура... HANDLE hEvent = ::CreateEvent (NULL, true, false, TEXT("MyEvent\0"));
if (hEvent == NULL) { return 1; }
hMapFile = CreateFileMapping( INVALID_HANDLE_VALUE, NULL, PAGE_READWRITE, 0, BUF_SIZE, szName );
if (hMapFile == NULL) { return 1; }
pBuf = (struct ReadFileParam *) MapViewOfFile( hMapFile, FILE_MAP_ALL_ACCESS, 0, 0, BUF_SIZE );
if (pBuf == NULL) { CloseHandle(hMapFile); return 1; }
|
Код открытия проекции:
| Код | HANDLE hMapFile;
hMapFile = OpenFileMapping( FILE_MAP_ALL_ACCESS, // read/write access FALSE, // do not inherit the name szName); // name of mapping object
|
|