Rumah >pembangunan bahagian belakang >Golang >Fungsi Windows asli IsTpmReady membuang ralat 'Terlalu banyak siaran ke semaphore'.

Fungsi Windows asli IsTpmReady membuang ralat 'Terlalu banyak siaran ke semaphore'.

王林
王林ke hadapan
2024-02-09 16:21:30937semak imbas

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

editor php Yuzai mengalami ralat semasa menggunakan fungsi Windows asli IsTpmReady Mesej ralat ialah "Terlalu banyak siaran telah disiarkan ke semaphore". Ralat ini mungkin menghalang program daripada berjalan dengan betul, jadi penyelesaian perlu dicari. Berikut akan memperkenalkan cara menyelesaikan ralat ini, saya harap ia akan membantu anda.

Kandungan soalan

Saya cuba memanggil fungsi tpmisready dari tpmcoreprovisioning.dll yang disertakan pada windows. Saya tidak perasan apa-apa yang jelas salah dengan kod itu, tetapi ralat itu dibuang tanpa mengira.

Ini yang saya ada:

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
}

Adakah saya menggunakan perkara yang salah, atau tidak membebaskan sumber?

Penyelesaian

Walaupun ini sebenarnya bukan bidang kepakaran saya kerana @Eelco selalunya menyebut ia mesti ada kaitan dengan antivirus anda. Anda boleh teruskan melalui senarai semak ini:

  1. Lumpuhkan mana-mana perisian antivirus yang anda jalankan, termasuk Windows Defender
  2. Jalankannya sebagai pentadbir (saya andaikan anda sudah mencuba ini)
  3. Periksa sama ada anda menggunakan versi terbaharu Windows

Jika masih tidak berkesan, cuba lakukan but bersih

  1. Tekan windows + R dan taip “msconfig”

  2. Ia sepatutnya membuka "Konfigurasi Sistem" dari mana anda perlu menavigasi ke "Tab Perkhidmatan" dan tandakan "Sembunyikan semua kotak Perkhidmatan Microsoft" dan tekan butang Lumpuhkan

  3. Navigasi ke tab Permulaan dan lumpuhkan semua program dengan cara yang sama dan klik Guna selepas menutup tetingkap Pengurus Tugas di dalam tab

  4. Teruskan dan mulakan semula komputer anda dan jalankan program semula

Jika masih tidak berfungsi, mungkin mulakan semula komputer anda dalam mod selamat (menggunakan rangkaian kerana lebih mudah untuk mencari sesuatu jika perlu) dan cuba lagi.

Jika ia masih tidak berkesan: Pada ketika ini saya tidak tahu apa lagi yang mungkin berkesan. Tetapi anda boleh cuba menjalankannya pada komputer lain dan lihat jika ralat berterusan. Anda boleh menetapkan semula mesin, tetapi ini boleh menyusahkan. Semak sama ada anda mempunyai sebarang program yang mungkin bercanggah atau dilanjutkan.

Atas ialah kandungan terperinci Fungsi Windows asli IsTpmReady membuang ralat 'Terlalu banyak siaran ke semaphore'.. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:stackoverflow.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam