簡體   English   中英

本機 Windows 函數 IsTpmReady 拋出“太多的帖子被發送到信號量”錯誤

[英]Native Windows Function IsTpmReady throws "too many posts were made to a semaphore" error

我正在嘗試從 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.繼續重新啟動計算機並再次運行程序

如果它仍然...... 不起作用,也許在安全模式下重新啟動你的機器(使用網絡,因為它更容易搜索需要的東西)然后再試一次。

如果它仍然不工作......此時我不知道還有什么可以工作......但你可以嘗試在另一台機器上運行它並查看錯誤是否仍然存在。 您可以重置您的機器,但這會很不方便...檢查您是否有任何可能沖突或擴展的程序。 不幸的是,這就是我所能做的一切......希望某些部分有用

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM