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 大多数时候都提到它应该与您的防病毒软件有关。 您可以继续完成此清单:
- 禁用您正在运行的所有防病毒软件,包括 Windows Defender
- 以管理员身份运行它(我假设您已经尝试过此操作)
- 检查您是否使用的是最新版本的 Windows
如果仍然不起作用,请尝试执行干净启动
-
按 windows + R 并输入“msconfig”
-
它应该打开“系统配置”,您必须从中导航到“服务选项卡”并选中“隐藏所有 Microsoft 服务框”,然后按禁用按钮
-
导航到启动选项卡并以相同的方式禁用所有程序,然后在关闭选项卡内的任务管理器窗口后单击“应用”
-
继续重新启动计算机并再次运行程序
如果仍然不起作用,也许可以在安全模式下重新启动计算机(使用网络,因为在需要时更容易搜索某些内容),然后重试。
如果它仍然不起作用:此时我不知道还有什么可以起作用。但您可以尝试在另一台计算机上运行它,看看错误是否仍然存在。您可以重置机器,但这会很不方便。检查您是否有任何可能发生冲突或扩展的程序。