Partager via


Tbsi_Get_TCG_Log_Ex fonction (tbs.h)

Obtient le journal de configuration de démarrage Windows (WBCL), également appelé journal TCG, du type spécifié.

Syntaxe

TBS_RESULT Tbsi_Get_TCG_Log_Ex(
  [in]            UINT32  logType,
  [out, optional] PBYTE   pbOutput,
  [in, out]       PUINT32 pcbOutput
);

Paramètres

[in] logType

Type de journal à récupérer.

Valeur Signification
TBS_TCGLOG_SRTM_CURRENT
0
Journal associé aux FICHIERSP 0-15 pour la session active (démarrage ou reprise).
TBS_TCGLOG_DRTM_CURRENT
1
Journal associé aux FICHIERSP 17-22 pour la session active (démarrage ou reprise).
TBS_TCGLOG_SRTM_BOOT
2
Journal associé aux FICHIERSP 0 à 15 pour la session de démarrage la plus récente propre.
TBS_TCGLOG_SRTM_RESUME
3
Journal associé aux PCR 0 à 15 pour le cv le plus récent après la mise en veille prolongée.

[out, optional] pbOutput

Pointeur vers une mémoire tampon qui reçoit et stocke la liste de contrôle WBCL. Définissez la valeur NULL pour estimer la mémoire tampon requise lorsque l’emplacement pointé par pcbOutput est également 0 en entrée.

[in, out] pcbOutput

Pointeur vers un entier long non signé qui spécifie la taille, en octets, de la mémoire tampon de sortie. En cas de réussite, contient la taille, en octets, des données pointées par pOutput. En cas d’échec, ne contient pas de valeur.

Note Si pbOutput a la valeur NULL et que l’emplacement pointé par pcbOutput est 0, la fonction retourne TBS_E_BUFFER_TOO_SMALL. Dans ce cas, pcbOutput pointe vers la taille requise de pbOutput.

Valeur retournée

Code/valeur de retour Description
TBS_SUCCESS
0 (0x0)
La fonction a réussi.
TBS_E_NO_EVENT_LOG
1 (0x1)
TBS_TCGLOG_DRTM_CURRENT a été demandé, mais DRTM n’était pas activé sur le système au démarrage du système.
TBS_E_INTERNAL_ERROR
2150121473 (0x80284001)
Une erreur interne du logiciel s'est produite.
Note Si TBS_E_INTERNAL_ERROR est retourné, le journal des événements système peut contenir l’ID d’événement 16385 de la source d’événements TBS avec le code d’erreur 0x80070032. Cela peut indiquer que la plateforme matérielle ne fournit pas de journal des événements TCG au système d’exploitation. Parfois, vous pouvez résoudre ce problème en installant une mise à niveau du BIOS à partir du fabricant de la plateforme.
 
TBS_E_INVALID_OUTPUT_POINTER
2150121475 (0x80284003)
Un pointeur de sortie spécifié n’est pas valide.
TBS_E_INSUFFICIENT_BUFFER
2150121477 (0x80284005)
La mémoire tampon de sortie est trop petite.
TBS_E_BUFFER_TOO_LARGE
2150121486 (0x8028400E)
La mémoire tampon de sortie est trop grande.
TBS_E_TPM_NOT_FOUND
2150121487 (0x8028400F)
Un appareil de sécurité compatible TPM (Trusted Platform Module) est introuvable sur cet ordinateur.
TBS_E_DEACTIVATED
2150121494 (0x80284016)
L’appareil de sécurité du module de plateforme sécurisée (TPM) est désactivé.

Remarques

La fonction Tbsi_Get_TCG_Log_Ex retourne le journal des événements TCG pour le système, et la taille de la mémoire tampon dépend du nombre d’événements.

La fonction peut retourner un journal qui utilise un format compatible avec différents algorithmes de hachage, en fonction des fonctionnalités matérielles et des paramètres du microprogramme. Ce journal met en forme chaque événement à l’exception du premier en tant que structure 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;

Le journal met en forme le premier événement en tant que structure TCG_PCR_EVENT , qui est décrite plus loin dans cette section Remarques. Le tableau suivant décrit les valeurs des membres de cette structure pour ce premier événement.

TCG_PCR_EVENT membre Valeur ou description
PCRIndex 0
EventType EV_NO_ACTION
Digest 20 octets de zéros
EventSize Taille du membre Event
Event A un type de TCG_EfiSpecIdEventStruct
 

Voici la syntaxe de la structure TCG_EfiSpecIdEventStruct que le membre Event de la structure TCG_PCR_EVENT utilise pour le premier événement de journal.

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;

Le membre signature de la structure TCG_EfiSpecIdEventStruct est défini sur une chaîne ASCII terminée par null de « Spec ID Event03 » lorsque le journal utilise le format compatible avec différents algorithmes de hachage. Le tableau DigestSizes de ce premier événement contient les tailles de synthèse des différents algorithmes de hachage que le journal utilise. Lorsqu’un analyseur inspecte un événement de type TCG_PCR_EVENT2, l’analyseur peut analyser le membre TPML_DIGEST_VALUES sans informations sur tous les algorithmes de hachage présents. Les tailles de synthèse du premier événement permettent à l’analyseur d’ignorer le nombre correct d’octets pour les synthèses présentes.

Si le membre Signature n’est pas défini sur une chaîne ASCII terminée par null de « Spec ID Event03 », les événements du journal sont de type TCG_PCR_EVENT et la structure TCG_EfiSpecIdEventStruct ne contient pas les membres NumberOfAlgorithms et DigestSizes .

Le format de journal compatible avec différents algorithmes de hachage permet à la plateforme et au système d’exploitation d’utiliser SHA1, SHA256 ou d’autres algorithmes de hachage. Si la plateforme prend en charge l’algorithme de hachage SHA256 et utilise le format de journal compatible avec différents algorithmes de hachage, la plateforme utilise l’algorithme SHA256 au lieu de SHA1.

Les événements définis par Windows dans le journal des événements TCG sont un tuple de {Type, Length, Value}. Vous pouvez analyser le journal à l’aide de la structure TCG_PCR_EVENT suivante à partir de la spécification cliente DU PC TCG. Vous pouvez créer une corrélation entre les listes d’événements de journal à l’aide des informations contenues dans le kit de ressources PCP TPM et la spécification principale du module de plateforme sécurisée.

typedef struct {
  TCG_PCRINDEX PCRIndex;
  TCG_EVENTTYPE EventType;
  TCG_DIGEST Digest;
  UINT32 EventSize;
  UINT8 Event[EventSize];
} TCG_PCR_EVENT;

La taille de mémoire requise pour le paramètre pOutputBuf doit être la constante dans TBS_IN_OUT_BUF_SIZE_MAX, définie dans le fichier d’en-tête Tbs.h, ou elle doit être obtenue en appelant la fonction Tbsi_Get_TCG_Log_Ex avec une mémoire tampon de longueur nulle pour obtenir la taille de mémoire tampon requise.

Configuration requise

Condition requise Valeur
Client minimal pris en charge Windows 10, version 1803 [applications de bureau uniquement]
Serveur minimal pris en charge Windows Server [applications de bureau uniquement]
Plateforme cible Windows
En-tête tbs.h
Bibliothèque Tbs.lib
DLL Tbs.dll