fungsi Tbsi_Get_TCG_Log (tbs.h)
Mengambil Log Konfigurasi Boot Windows (WBCL) terbaru, juga disebut sebagai log TCG.
Sintaks
TBS_RESULT Tbsi_Get_TCG_Log(
[in] TBS_HCONTEXT hContext,
[out] PBYTE pOutputBuf,
[in, out] PUINT32 pOutputBufLen
);
Parameter
[in] hContext
Handel TBS dari konteks yang mengambil log. Anda mendapatkan parameter ini dari panggilan sebelumnya ke fungsi Tbsi_Context_Create .
[out] pOutputBuf
Pointer ke buffer untuk menerima dan menyimpan WBCL. Parameter ini mungkin NULL untuk memperkirakan buffer yang diperlukan ketika lokasi yang diacu oleh pcbOutput juga 0 pada input.
[in, out] pOutputBufLen
Penunjuk ke bilangan bulat panjang yang tidak ditandatangani yang, pada input, menentukan ukuran, dalam byte, dari buffer output. Jika fungsi berhasil, parameter ini, pada output, menerima ukuran, dalam byte, dari data yang diacu oleh pOutputBuf. Jika fungsi gagal, parameter ini tidak menerima nilai.
Memanggil fungsi Tbsi_Get_TCG_Log dengan buffer panjang nol akan mengembalikan ukuran buffer yang diperlukan. Windows Vista dengan SP1 dan Windows Server 2008: Fungsionalitas ini tidak tersedia.
Mengembalikan nilai
Mengembalikan kode/nilai | Deskripsi |
---|---|
|
Fungsi berhasil. |
|
Terjadi kesalahan perangkat lunak internal.
Catatan Jika TBS_E_INTERNAL_ERROR dikembalikan, log peristiwa sistem mungkin berisi ID peristiwa 16385 dari sumber peristiwa TBS dengan kode kesalahan 0x80070032. Ini mungkin menunjukkan bahwa platform perangkat keras tidak menyediakan log peristiwa TCG ke sistem operasi. Terkadang ini dapat diselesaikan dengan menginstal peningkatan BIOS dari produsen platform.
|
|
Penunjuk output yang ditentukan tidak valid. |
|
Handel konteks yang ditentukan tidak merujuk ke konteks yang valid. |
|
Buffer output terlalu kecil. |
|
Buffer output terlalu besar. |
|
Perangkat Keamanan Modul Platform Tepercaya (TPM) yang kompatibel tidak dapat ditemukan pada komputer ini. |
|
Perangkat Keamanan Modul Platform Tepercaya (TPM) dinonaktifkan.
Windows Vista dengan SP1 dan Windows Server 2008: Nilai pengembalian ini tidak tersedia. |
Keterangan
Fungsi Tbsi_Get_TCG_Log mengembalikan Log Peristiwa TCG untuk sistem, dan ukuran buffer tergantung pada jumlah peristiwa.
Windows 10:
Fungsi ini dapat mengembalikan log yang menggunakan format yang kompatibel dengan algoritma hashing yang berbeda, tergantung pada kemampuan perangkat keras dan pengaturan firmware. Log ini memformat setiap peristiwa kecuali yang pertama sebagai struktur TCG_PCR_EVENT2:
typedef struct {
TCG_PCRINDEX PCRIndex;
TCG_EVENTTYPE EventType;
TPML_DIGEST_VALUES Digests;
UINT32 EventSize;
UINT8 Event[EventSize];
} TCG_PCR_EVENT2;
typedef struct {
UINT32 Count;
TPMT_HA Digests;
} TPML_DIGEST_VALUES;
typedef struct {
UINT16 HashAlg;
UINT8 Digest[size_varies_with_algorithm];
} TPMT_HA;
Log memformat peristiwa pertama sebagai struktur TCG_PCR_EVENT , yang dijelaskan nanti di bagian Keterangan ini. Tabel berikut ini menjelaskan nilai anggota struktur ini untuk peristiwa pertama ini.
anggota TCG_PCR_EVENT | Nilai atau deskripsi |
---|---|
PCRIndex | 0 |
EventType | EV_NO_ACTION |
Mencerna | 20 byte nol |
EventSize | Ukuran anggota Peristiwa |
Kejadian | Memiliki jenis TCG_EfiSpecIdEventStruct |
Berikut ini memperlihatkan sintaks struktur TCG_EfiSpecIdEventStruct yang digunakan anggota Peristiwa dari struktur TCG_PCR_EVENT untuk peristiwa log pertama.
typedef struct {
BYTE[16] Signature;
UINT32 PlatformClass;
UINT8 SpecVersionMinor;
UINT8 SpecVersionMajor;
UINT8 SpecErrata;
UINT8 UintNSize;
UINT32 NumberOfAlgorithms;
TCG_EfiSpecIdEventAlgorithmSize DigestSizes[NumberOfAlgorithms];
UINT8 VendorInfoSize;
UINT8 VendorInfo[VendorInfoSize];
} TCG_EfiSpecIdEventStruct;
typedef struct {
UINT16 HashAlg;
UINT16 DigestSize;
} TCG_EfiSpecIdEventAlgorithmSize;
Anggota Tanda Tangan dari struktur TCG_EfiSpecIdEventStruct diatur ke string ASCII null-dihentikan dari "Spec ID Event03" saat log menggunakan format yang kompatibel dengan algoritma hash yang berbeda. Array DigestSizes dalam peristiwa pertama ini berisi ukuran hash yang berbeda yang digunakan log. Ketika pengurai memeriksa peristiwa jenis TCG_PCR_EVENT2, pengurai dapat mengurai anggota TPML_DIGEST_VALUES tanpa informasi tentang semua algoritma hashing yang ada. Ukuran hash dalam peristiwa pertama memungkinkan pengurai untuk melewati jumlah byte yang benar untuk hash yang ada.
Jika anggota Tanda Tangan tidak diatur ke string ASCII null-dihentikan dari "Spec ID Event03", maka peristiwa dalam log berjenis TCG_PCR_EVENT, dan struktur TCG_EfiSpecIdEventStruct tidak berisi anggota NumberOfAlgorithms dan DigestSizes .
Format log yang kompatibel dengan algoritma hashing yang berbeda memungkinkan platform dan sistem operasi untuk menggunakan SHA1, SHA256, atau algoritma hashing lainnya. Jika platform mendukung algoritma hash SHA256 dan menggunakan format log yang kompatibel dengan algoritma hashing yang berbeda, platform menggunakan algoritma SHA256 alih-alih SHA1.
Windows Vista dengan SP1 dan Windows Server 2008: Fungsi mengembalikan log langsung dari tabel ACPI dan mengembalikan seluruh buffer yang dialokasikan ACPI, termasuk buffer yang tidak digunakan setelah peristiwa apa pun.
Peristiwa yang ditentukan Windows dalam log peristiwa TCG adalah tuple dari {Type, Length, Value}. Anda dapat mengurai log menggunakan struktur TCG_PCR_EVENT berikut dari spesifikasi Klien PC TCG. Anda dapat membuat korelasi antara daftar peristiwa log menggunakan informasi di Toolkit PCP TPM dan Spesifikasi Utama TPM.
typedef struct {
TCG_PCRINDEX PCRIndex;
TCG_EVENTTYPE EventType;
TCG_DIGEST Digest;
UINT32 EventSize;
UINT8 Event[EventSize];
} TCG_PCR_EVENT;
Ukuran memori yang diperlukan untuk parameter pOutputBuf harus menjadi konstanta dalam TBS_IN_OUT_BUF_SIZE_MAX, yang ditentukan dalam file header Tbs.h, atau harus diperoleh dengan memanggil fungsi Tbsi_Get_TCG_Log dengan buffer panjang nol untuk mendapatkan ukuran buffer yang diperlukan.
Windows Vista dengan SP1 dan Windows Server 2008: Memanggil fungsi Tbsi_Get_TCG_Log dengan buffer panjang nol untuk mendapatkan ukuran buffer yang diperlukan tidak didukung. Kami menyarankan agar Anda menggunakan TBS_IN_OUT_BUF_SIZE_MAX konstanta, yang ditentukan dalam file header Tbs.h, untuk ukuran memori untuk parameter pOutputBuf .
Contoh
#include <windows.h>
#include <tbs.h>
#pragma comment(lib, "Tbs.lib")
void main()
{
TBS_RESULT result;
TBS_HCONTEXT hContext;
TBS_CONTEXT_PARAMS contextParams;
contextParams.version = TBS_CONTEXT_VERSION_ONE;
result = Tbsi_Context_Create(&contextParams, &hContext);
if (result == TBS_SUCCESS)
{
UINT32 iLogSize = TBS_IN_OUT_BUF_SIZE_MAX;
BYTE* pLogBuffer = new BYTE[iLogSize];
result = Tbsi_Get_TCG_Log(hContext, pLogBuffer, &iLogSize);
}
}
Persyaratan
Klien minimum yang didukung | Windows Vista dengan SP1 [hanya aplikasi desktop] |
Server minimum yang didukung | Windows Server 2008 [hanya aplikasi desktop] |
Target Platform | Windows |
Header | tbs.h |
Pustaka | Tbs.lib |
DLL | Tbs.dll |