API с функцией CreateMailslot в C ++ DLL не может быть вызван UWP - PullRequest
0 голосов
/ 05 декабря 2018

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.

1 Ответ

0 голосов
/ 05 декабря 2018

API CreateMailslot недоступен при нацеливании на универсальную платформу Windows.Раздел Требования описывает это:

  • Минимально поддерживаемый клиент: Windows 2000 Professional [ только настольные приложения ]
  • Минимум поддерживаетсясервер: Windows 2000 Server [ только настольные приложения ]

Вам нужно будет найти другой способ реализации Межпроцессное взаимодействие , доступный вуниверсальная платформа Windows (например, Pipes ).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...