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.
[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 |
---|---|
|
La fonction a réussi. |
|
TBS_TCGLOG_DRTM_CURRENT a été demandé, mais DRTM n’était pas activé sur le système au démarrage du système. |
|
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.
|
|
Un pointeur de sortie spécifié n’est pas valide. |
|
La mémoire tampon de sortie est trop petite. |
|
La mémoire tampon de sortie est trop grande. |
|
Un appareil de sécurité compatible TPM (Trusted Platform Module) est introuvable sur cet ordinateur. |
|
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 |