これはあなたにとってばかげた質問かもしれません..しかし、私にはうまくいきません! (WinRT の新機能 .. Windows もそうかもしれません!) セマフォを作成しようとして、それを取得しようとしているだけです。しかし、それは WAIT_FAILED: 5 (アクセスが拒否されました) で失敗します
void MainPage::simple_Sema_test1()
{
HANDLE p_sema;
DWORD ret, err;
p_sema = CreateSemaphoreEx(NULL, 1, MAX_LIMIT, L"sema1", 0, SEMAPHORE_MODIFY_STATE);
if(p_sema == NULL)
print_on_textbox("CreateSemaphoreEx Failed!\n");
ret = WaitForSingleObjectEx(p_sema, 1000, TRUE);
switch(ret){
case WAIT_ABANDONED:
print_on_textbox("WAIT_ABANDONED\n");
case WAIT_IO_COMPLETION:
print_on_textbox("WAIT_IO_COMPLETION\n");
case WAIT_OBJECT_0:
print_on_textbox("WAIT_OBJECT_0\n");
case WAIT_TIMEOUT:
print_on_textbox("WAIT_TIMEOUT\n");
case WAIT_FAILED:
print_on_textbox("WAIT_FAILED: " + (GetLastError()).ToString());
}
<<< を編集 (一部解決済み) SEMAPHORE_ALL_ACCESS でセマフォを作成
すなわち
*sema = CreateSemaphoreEx(NULL, initial, MAX_LIMIT, L"sema1", 0, SEMAPHORE_ALL_ACCESS);
変更アクセスで機能しなかった理由を誰かが知っている場合は、説明してください!