OpenMutex 中的访问权限为 0x10000000

问题描述 投票:0回答:1

我在代码中看到了

HANDLE handle = OpenMutex(0x10000000, false, L"NameOfMutexObject")
。调用似乎成功了,因为我得到了一个句柄(返回值 > 0 并且不为 NULL)。但是当我检查文档以了解该位掩码所代表的权限时,我找不到它。 所以我的问题是:如果
dwDesiredAccess = 0x10000000
那么授予哪些访问权限?

我已经尝试过一个最小的例子:

void testing_mutex() {
    HANDLE hMutex;

    hMutex = CreateMutex(
        NULL,                        // default security descriptor
        FALSE,                       // mutex not owned
        TEXT("NameOfMutexObject")
    );

    HANDLE mhandle = OpenMutex(0x10000000, false, L"NameOfMutexObject");
    if (mhandle == NULL || mhandle == 0)
    {
        printf("OpenMutex error: %d\n", GetLastError());
        return;
    }
    printf("MY MUTEX HANDLE: %d\n", mhandle);
}

int main(void)
{
    testing_mutex();
}
c windows winapi
1个回答
0
投票

来自 访问掩码格式

4 个高位用于指定 通用访问权限 每个对象类型都可以映射到一组标准和特定于对象的 权利。

以及来自 winnt.h

#define GENERIC_ALL                      (0x10000000L)

所以代码实际上是

HANDLE mhandle = OpenMutex(GENERIC_ALL, false, L"NameOfMutexObject");

表示具有所有可能访问权限的开放对象

© www.soinside.com 2019 - 2024. All rights reserved.