到UWP App的C ++ DLL“ DllImport”。
UWP称为此API。
DLL中的API:
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,表示“访问被拒绝”。
我在Win10 IoTCore中部署了该uwp应用。
答案 0 :(得分:1)
定位到通用Windows平台时,CreateMailslot API不可用。 Requirements部分记录了以下内容:
- 支持的最低客户端:Windows 2000 Professional [仅桌面应用]
- 支持的最低服务器:Windows 2000 Server [仅桌面应用]
您将不得不找到一种通用的Windows平台(例如Interprocess Communications)中可用的Pipes实现方式。