首页 >后端开发 >Golang >本机 Windows 函数 IsTpmReady 抛出'对信号量发布了太多帖子”错误

本机 Windows 函数 IsTpmReady 抛出'对信号量发布了太多帖子”错误

王林
王林转载
2024-02-09 16:21:30956浏览

本机 Windows 函数 IsTpmReady 抛出“对信号量发布了太多帖子”错误

php小编鱼仔在使用本机 Windows 函数IsTpmReady时,遇到了一个错误,错误信息为“对信号量发布了太多帖子”。这个错误可能导致程序无法正常运行,因此需要找到解决方法。下面将为大家介绍如何解决这个错误,希望能对大家有所帮助。

问题内容

我正在尝试从 windows 上包含的 tpmcoreprovisioning.dll 调用 tpmisready 函数。我没有注意到代码有任何明显的错误,但无论如何都会抛出错误。

这就是我所拥有的:

package windows

import (
    "errors"
    "log"
    "syscall"
    "unsafe"
)

var (
    TPMDLL   = syscall.NewLazyDLL("TpmCoreProvisioning.dll")
    TpmReady = TPMDLL.NewProc("TpmIsReady")
)

func IsTpmReady() (bool, error) {
    var enabled byte
    ptr := (uintptr)(unsafe.Pointer(&enabled))
    _, _, err := TpmReady.Call(ptr)
    if errors.Is(err, syscall.Errno(0)) {
        return enabled == 1, nil
    }
    if DEBUG {
        log.Printf("IsTpmReady: %v", err)
    }
    return false, err
}

我是否使用了错误的东西,或者没有释放资源?

解决方法

尽管这并不是我的专业领域,因为 @Eelco 大多数时候都提到它应该与您的防病毒软件有关。 您可以继续完成此清单:

  1. 禁用您正在运行的所有防病毒软件,包括 Windows Defender
  2. 以管理员身份运行它(我假设您已经尝试过此操作)
  3. 检查您是否使用的是最新版本的 Windows

如果仍然不起作用,请尝试执行干净启动

  1. 按 windows + R 并输入“msconfig”

  2. 它应该打开“系统配置”,您必须从中导航到“服务选项卡”并选中“隐藏所有 Microsoft 服务框”,然后按禁用按钮

  3. 导航到启动选项卡并以相同的方式禁用所有程序,然后在关闭选项卡内的任务管理器窗口后单击“应用”

  4. 继续重新启动计算机并再次运行程序

如果仍然不起作用,也许可以在安全模式下重新启动计算机(使用网络,因为在需要时更容易搜索某些内容),然后重试。

如果它仍然不起作用:此时我不知道还有什么可以起作用。但您可以尝试在另一台计算机上运行它,看看错误是否仍然存在。您可以重置机器,但这会很不方便。检查您是否有任何可能发生冲突或扩展的程序。

以上是本机 Windows 函数 IsTpmReady 抛出'对信号量发布了太多帖子”错误的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文转载于:stackoverflow.com。如有侵权,请联系admin@php.cn删除