C ++ DLL «DllImport» для приложения UWP.
UWP вызвал этот API.
API в DLL:
int CreateSingletonMutex(HANDLE *phSingletonMutex)
{
Singleton_mutex_t *pSingletonMutex;
do{
pSingletonMutex = (Singleton_mutex_t*)mem_malloc(sizeof(Singleton_mutex_t), DEFAULT_ALIGN_SIZE);
if (pSingletonMutex == NULL)
{
break;
}
memset(pSingletonMutex, 0x0, sizeof(Singleton_mutex_t));
LPTSTR SlotNameThis = TEXT("\\\\.\\mailslot\\mailslot_ct_maincore");
pSingletonMutex->critSec = INVALID_HANDLE_VALUE;
SECURITY_DESCRIPTOR sd;
InitializeSecurityDescriptor(&sd, SECURITY_DESCRIPTOR_REVISION);
SetSecurityDescriptorDacl(&sd, true, NULL, false);
SECURITY_ATTRIBUTES sa;
sa.lpSecurityDescriptor=&sd;
sa.bInheritHandle=false;
pSingletonMutex->critSec = CreateMailslot(SlotNameThis, 0, 100, &sa);
if (pSingletonMutex->critSec == INVALID_HANDLE_VALUE)
{
int ret = GetLastError();
mem_free(pSingletonMutex, DEFAULT_ALIGN_SIZE);
pSingletonMutex = NULL;
}
} while (0);
*phSingletonMutex = pSingletonMutex;
return 0;
}
Не удалось вызвать этот API, GetLastError = 5 означает «Доступ»Отказано ".
Я развернул это приложение uwp в Win10 IoTCore.