gpt4 book ai didi

c++ - 如何在进程之间共享内核对象,例如 Waitable Timers?

转载 作者:行者123 更新时间:2023-11-28 00:21:29 24 4
gpt4 key购买 nike

我正在创建一个对象,例如 Waitable Timer,我想与另一个进程共享我的对象:

// In process 1:
HANDLE hTimerProcess1 = CreateWaitableTimer(NULL, FALSE, L"Time1");
// In process 2:
HANDLE hTimerProcess2 = CreateWaitableTimer(NULL, FALSE, L"Time1");
  1. 作为第三个参数,我传递了相同的名称 "Time1",这是否意味着我正在创建一个新的内核对象 hTimerProcess2 但具有相同的描述符表作为 hTimerProcess1 的条目,或者 hTimerProcess2 只是对现有对象 (hTimerProcess1) 的引用?
  2. 如何证明 hTimerProcess1hTimerProcess2 是同一个内核对象?我试着获取他们的地址,但地址不同。

我正在阅读 M. Richter 的《Advanced Win32 Programming》

最佳答案

从文档到 CreateWaitableTimer:

If the named timer object exists before the function call, the function returns a handle to the existing object and GetLastError returns ERROR_ALREADY_EXISTS.

所以您的问题 #1 的答案是否定的,您没有创建新的内核对象 - 如果两个调用都成功,它们将引用同一个计时器。

如何证明它们相同?您可以通过在一个进程中调用 SetWaitableTimer 并在另一个进程中等待它来完成此操作。

如果您想额外确保在第二个进程中获得相同的计时器对象,请改为调用 OpenWaitableTimer - 因为只有当计时器已经存在时才会成功。

关于c++ - 如何在进程之间共享内核对象,例如 Waitable Timers?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27259637/

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