gpt4 book ai didi

windows - CreateMutex() 和 OpenMutex() 返回不同的句柄

转载 作者:可可西里 更新时间:2023-11-01 10:08:03 30 4
gpt4 key购买 nike

我认为这两个函数将返回相同的内核句柄。并且我写了一个测试程序来证明我的观点:

在我的程序中,我创建了一个名为“_MYTEST”的内核句柄

hHandle1 = CreateMutex(NULL, false, _T("_MYTEST"));

然后我启动一个线程并使用以下代码在该线程中打开上面的句柄:

hHandle2 = OpenMutex(MUTEX_ALL_ACCESS, false, _T("_MYTEST"));

当我运行程序时,我发现两个返回值不相等!hHandle2 的值比 hHandle1 的值大 4。为什么?我的代码有什么问题吗?如果没有,为什么两个值不相等?

最佳答案

句柄不是对象,它是存储在内核中的描述符,将仅在程序地址空间中有效的值映射到内核对象。

长话短说:互斥量的句柄不是互斥量本身。仅仅因为句柄不同并不意味着下面的互斥量不同。

这就像在 C 中创建两个指向一个对象的不同指针,然后比较指针的地址(与指针的内容)以错误地推断出对象不相同。

关于windows - CreateMutex() 和 OpenMutex() 返回不同的句柄,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10290999/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com