OpenMutex()中0x10000000代表什么访问权限?

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

我在一段代码中看到:

HANDLE handle = OpenMutex(0x10000000, false, L"NameOfMutexObject");

调用似乎成功了,因为我收到了有效的句柄(返回值不为 NULL)。但是当我在文档中查看这个0x10000000位掩码代表什么权限时,我找不到它。

所以,我的问题是:如果

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个回答
2
投票

来自 访问掩码格式

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

以及来自 winnt.h

#define GENERIC_ALL                      (0x10000000L)

所以代码实际上是

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

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

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