]> git.proxmox.com Git - mirror_edk2.git/blobdiff - MdePkg/Include/IndustryStandard/Tpm12.h
1. add some comments for structures
[mirror_edk2.git] / MdePkg / Include / IndustryStandard / Tpm12.h
index 0c5fac2f9797db4c87477dca35bf70697e5af06f..5f5ce5731dc91cc5fe40b8affd6f9028379e0d52 100644 (file)
@@ -22,7 +22,7 @@
 #define TPM_BASE                    (EFI_MAX_BIT + (EFI_MAX_BIT >> 1))\r
 \r
 //\r
-// Structures are all packed on 1-byte alignment\r
+// All structures MUST be packed on a byte boundary.\r
 //\r
 \r
 #pragma pack (1)\r
@@ -281,9 +281,9 @@ typedef UINT32                      TPM_FAMILY_OPERATION;
 // Part 2, section 5: Basic Structures\r
 //\r
 \r
-//\r
-// Part 2, section 5.1: TPM_STRUCT_VER\r
-//\r
+///\r
+/// Part 2, section 5.1: TPM_STRUCT_VER\r
+///\r
 typedef struct tdTPM_STRUCT_VER {\r
   UINT8                             major;\r
   UINT8                             minor;\r
@@ -291,9 +291,9 @@ typedef struct tdTPM_STRUCT_VER {
   UINT8                             revMinor;\r
 } TPM_STRUCT_VER;\r
 \r
-//\r
-// Part 2, section 5.3: TPM_VERSION\r
-//\r
+///\r
+/// Part 2, section 5.3: TPM_VERSION\r
+///\r
 typedef struct tdTPM_VERSION {\r
   TPM_VERSION_BYTE                  major;\r
   TPM_VERSION_BYTE                  minor;\r
@@ -301,16 +301,17 @@ typedef struct tdTPM_VERSION {
   UINT8                             revMinor;\r
 } TPM_VERSION;\r
 \r
-//\r
-// Part 2, section 5.4: TPM_DIGEST\r
-//\r
-#define TPM_SHA1_160_HASH_LEN       0x14\r
-#define TPM_SHA1BASED_NONCE_LEN     TPM_SHA1_160_HASH_LEN\r
 \r
+///\r
+/// Part 2, section 5.4: TPM_DIGEST\r
+///\r
 typedef struct tdTPM_DIGEST{\r
   UINT8                             digest[TPM_SHA1_160_HASH_LEN];\r
 } TPM_DIGEST;\r
 \r
+#define TPM_SHA1_160_HASH_LEN       0x14\r
+#define TPM_SHA1BASED_NONCE_LEN     TPM_SHA1_160_HASH_LEN\r
+\r
 typedef TPM_DIGEST                  TPM_CHOSENID_HASH;\r
 typedef TPM_DIGEST                  TPM_COMPOSITE_HASH;\r
 typedef TPM_DIGEST                  TPM_DIRVALUE;\r
@@ -320,9 +321,9 @@ typedef TPM_DIGEST                  TPM_AUDITDIGEST;
 typedef TPM_DIGEST                  TPM_DAA_TPM_SEED;\r
 typedef TPM_DIGEST                  TPM_DAA_CONTEXT_SEED;\r
 \r
-//\r
-// Part 2, section 5.5: TPM_NONCE\r
-//\r
+///\r
+/// Part 2, section 5.5: TPM_NONCE\r
+///\r
 typedef struct tdTPM_NONCE{\r
   UINT8                             nonce[20];\r
 } TPM_NONCE;\r
@@ -335,10 +336,10 @@ typedef tdTPM_AUTHDATA              TPM_AUTHDATA;
 typedef TPM_AUTHDATA                TPM_SECRET;\r
 typedef TPM_AUTHDATA                TPM_ENCAUTH;\r
 \r
-//\r
-// Part 2, section 5.7: TPM_KEY_HANDLE_LIST\r
-// Size of handle is loaded * sizeof(TPM_KEY_HANDLE)\r
-//\r
+///\r
+/// Part 2, section 5.7: TPM_KEY_HANDLE_LIST\r
+/// Size of handle is loaded * sizeof(TPM_KEY_HANDLE)\r
+///\r
 typedef struct tdTPM_KEY_HANDLE_LIST {\r
   UINT16                            loaded;\r
   TPM_KEY_HANDLE                    handle[1];\r
@@ -409,9 +410,9 @@ typedef struct tdTPM_KEY_HANDLE_LIST {
 #define TPM_AUTH_ALWAYS             ((TPM_AUTH_DATA_USAGE) 0x01)\r
 #define TPM_AUTH_PRIV_USE_ONLY      ((TPM_AUTH_DATA_USAGE) 0x03)\r
 \r
-//\r
-// Part 2, section 5.10: TPM_KEY_FLAGS\r
-//\r
+///\r
+/// Part 2, section 5.10: TPM_KEY_FLAGS\r
+///\r
 typedef enum tdTPM_KEY_FLAGS {\r
   redirection                       = 0x00000001,\r
   migratable                        = 0x00000002,\r
@@ -420,21 +421,21 @@ typedef enum tdTPM_KEY_FLAGS {
   migrateAuthority                  = 0x00000010\r
 } TPM_KEY_FLAGS_BITS;\r
 \r
-//\r
-// Part 2, section 5.11: TPM_CHANGEAUTH_VALIDATE\r
-//\r
+///\r
+/// Part 2, section 5.11: TPM_CHANGEAUTH_VALIDATE\r
+///\r
 typedef struct tdTPM_CHANGEAUTH_VALIDATE {\r
   TPM_SECRET                        newAuthSecret;\r
   TPM_NONCE                         n1;\r
 } TPM_CHANGEAUTH_VALIDATE;\r
 \r
-//\r
-// Part 2, section 5.12: TPM_MIGRATIONKEYAUTH\r
-//   decalared after section 10 to catch declaration of TPM_PUBKEY\r
-//\r
-// Part 2 section 10.1: TPM_KEY_PARMS\r
-//   [size_is(parmSize)] BYTE* parms;\r
-//\r
+///\r
+/// Part 2, section 5.12: TPM_MIGRATIONKEYAUTH\r
+///   decalared after section 10 to catch declaration of TPM_PUBKEY\r
+///\r
+/// Part 2 section 10.1: TPM_KEY_PARMS\r
+///   [size_is(parmSize)] BYTE* parms;\r
+///\r
 typedef struct tdTPM_KEY_PARMS {\r
   TPM_ALGORITHM_ID                  algorithmID;\r
   TPM_ENC_SCHEME                    encScheme;\r
@@ -443,44 +444,44 @@ typedef struct tdTPM_KEY_PARMS {
   UINT8                             *parms;\r
 } TPM_KEY_PARMS;\r
 \r
-//\r
-// Part 2, section 10.4: TPM_STORE_PUBKEY\r
-//\r
+///\r
+/// Part 2, section 10.4: TPM_STORE_PUBKEY\r
+///\r
 typedef struct tdTPM_STORE_PUBKEY {\r
   UINT32                            keyLength;\r
   UINT8                             key[1];\r
 } TPM_STORE_PUBKEY;\r
 \r
-//\r
-// Part 2, section 10.5: TPM_PUBKEY\r
-//\r
+///\r
+/// Part 2, section 10.5: TPM_PUBKEY\r
+///\r
 typedef struct tdTPM_PUBKEY{\r
   TPM_KEY_PARMS                     algorithmParms;\r
   TPM_STORE_PUBKEY                  pubKey;\r
 } TPM_PUBKEY;\r
 \r
-//\r
-// Part 2, section 5.12: TPM_MIGRATIONKEYAUTH\r
-//\r
+///\r
+/// Part 2, section 5.12: TPM_MIGRATIONKEYAUTH\r
+///\r
 typedef struct tdTPM_MIGRATIONKEYAUTH{\r
   TPM_PUBKEY                        migrationKey;\r
   TPM_MIGRATE_SCHEME                migrationScheme;\r
   TPM_DIGEST                        digest;\r
 } TPM_MIGRATIONKEYAUTH;\r
 \r
-//\r
-// Part 2, section 5.13: TPM_COUNTER_VALUE\r
-//\r
+///\r
+/// Part 2, section 5.13: TPM_COUNTER_VALUE\r
+///\r
 typedef struct tdTPM_COUNTER_VALUE{\r
   TPM_STRUCTURE_TAG                 tag;\r
   UINT8                             label[4];\r
   TPM_ACTUAL_COUNT                  counter;\r
 } TPM_COUNTER_VALUE;\r
 \r
-//\r
-// Part 2, section 5.14: TPM_SIGN_INFO\r
-//   Size of data indicated by dataLen\r
-//\r
+///\r
+/// Part 2, section 5.14: TPM_SIGN_INFO\r
+///   Size of data indicated by dataLen\r
+///\r
 typedef struct tdTPM_SIGN_INFO {\r
   TPM_STRUCTURE_TAG                 tag;\r
   UINT8                             fixed[4];\r
@@ -489,18 +490,18 @@ typedef struct tdTPM_SIGN_INFO {
   UINT8                             *data;\r
 } TPM_SIGN_INFO;\r
 \r
-//\r
-// Part 2, section 5.15: TPM_MSA_COMPOSITE\r
-//   Number of migAuthDigest indicated by MSAlist\r
-//\r
+///\r
+/// Part 2, section 5.15: TPM_MSA_COMPOSITE\r
+///   Number of migAuthDigest indicated by MSAlist\r
+///\r
 typedef struct tdTPM_MSA_COMPOSITE {\r
   UINT32                            MSAlist;\r
   TPM_DIGEST                        migAuthDigest[1];\r
 } TPM_MSA_COMPOSITE;\r
 \r
-//\r
-// Part 2, section 5.16: TPM_CMK_AUTH\r
-//\r
+///\r
+/// Part 2, section 5.16: TPM_CMK_AUTH\r
+///\r
 typedef struct tdTPM_CMK_AUTH{\r
   TPM_DIGEST                        migrationAuthorityDigest;\r
   TPM_DIGEST                        destinationKeyDigest;\r
@@ -516,36 +517,36 @@ typedef struct tdTPM_CMK_AUTH{
 #define TPM_CMK_DELEGATE_LEGACY     ((TPM_CMK_DELEGATE) BIT28)\r
 #define TPM_CMK_DELEGATE_MIGRATE    ((TPM_CMK_DELEGATE) BIT27)\r
 \r
-//\r
-// Part 2, section 5.18: TPM_SELECT_SIZE\r
-//\r
+///\r
+/// Part 2, section 5.18: TPM_SELECT_SIZE\r
+///\r
 typedef struct tdTPM_SELECT_SIZE {\r
   UINT8                             major;\r
   UINT8                             minor;\r
   UINT16                            reqSize;\r
 } TPM_SELECT_SIZE;\r
 \r
-//\r
-// Part 2, section 5,19: TPM_CMK_MIGAUTH\r
-//\r
+///\r
+/// Part 2, section 5,19: TPM_CMK_MIGAUTH\r
+///\r
 typedef struct tdTPM_CMK_MIGAUTH{\r
   TPM_STRUCTURE_TAG                 tag;\r
   TPM_DIGEST                        msaDigest;\r
   TPM_DIGEST                        pubKeyDigest;\r
 } TPM_CMK_MIGAUTH;\r
 \r
-//\r
-// Part 2, section 5.20: TPM_CMK_SIGTICKET\r
-//\r
+///\r
+/// Part 2, section 5.20: TPM_CMK_SIGTICKET\r
+///\r
 typedef struct tdTPM_CMK_SIGTICKET{\r
   TPM_STRUCTURE_TAG                 tag;\r
   TPM_DIGEST                        verKeyDigest;\r
   TPM_DIGEST                        signedData;\r
 } TPM_CMK_SIGTICKET;\r
 \r
-//\r
-// Part 2, section 5.21: TPM_CMK_MA_APPROVAL\r
-//\r
+///\r
+/// Part 2, section 5.21: TPM_CMK_MA_APPROVAL\r
+///\r
 typedef struct tdTPM_CMK_MA_APPROVAL{\r
   TPM_STRUCTURE_TAG                 tag;\r
   TPM_DIGEST                        migrationAuthorityDigest;\r
@@ -561,9 +562,9 @@ typedef struct tdTPM_CMK_MA_APPROVAL{
 #define TPM_TAG_RSP_AUTH1_COMMAND   ((TPM_STRUCTURE_TAG) 0x00C5)\r
 #define TPM_TAG_RSP_AUTH2_COMMAND   ((TPM_STRUCTURE_TAG) 0x00C6)\r
 \r
-//\r
-// Part 2, section 7.1: TPM_PERMANENT_FLAGS\r
-//\r
+///\r
+/// Part 2, section 7.1: TPM_PERMANENT_FLAGS\r
+///\r
 typedef struct tdTPM_PERMANENT_FLAGS{\r
   TPM_STRUCTURE_TAG                 tag;\r
   BOOLEAN                           disable;\r
@@ -610,9 +611,9 @@ typedef struct tdTPM_PERMANENT_FLAGS{
 #define TPM_PF_TPMESTABLISHED               ((TPM_CAPABILITY_AREA) 18)\r
 #define TPM_PF_MAINTENANCEDONE              ((TPM_CAPABILITY_AREA) 19)\r
 \r
-//\r
-// Part 2, section 7.2: TPM_STCLEAR_FLAGS\r
-//\r
+///\r
+/// Part 2, section 7.2: TPM_STCLEAR_FLAGS\r
+///\r
 typedef struct tdTPM_STCLEAR_FLAGS{\r
   TPM_STRUCTURE_TAG                 tag;\r
   BOOLEAN                           deactivated;\r
@@ -631,9 +632,9 @@ typedef struct tdTPM_STCLEAR_FLAGS{
 #define TPM_SF_PHYSICALPRESENCELOCK ((TPM_CAPABILITY_AREA) 4)\r
 #define TPM_SF_BGLOBALLOCK          ((TPM_CAPABILITY_AREA) 5)\r
 \r
-//\r
-// Part 2, section 7.3: TPM_STANY_FLAGS\r
-//\r
+///\r
+/// Part 2, section 7.3: TPM_STANY_FLAGS\r
+///\r
 typedef struct tdTPM_STANY_FLAGS{\r
   TPM_STRUCTURE_TAG                 tag;\r
   BOOLEAN                           postInitialise;\r
@@ -659,37 +660,37 @@ typedef struct tdTPM_STANY_FLAGS{
 // Part 2, section 8: PCR Structures\r
 // \r
 \r
-//\r
-// Part 2, section 8.1: TPM_PCR_SELECTION\r
-//   Size of pcrSelect[] indicated by sizeOfSelect\r
-//\r
+///\r
+/// Part 2, section 8.1: TPM_PCR_SELECTION\r
+///   Size of pcrSelect[] indicated by sizeOfSelect\r
+///\r
 typedef struct tdTPM_PCR_SELECTION {\r
   UINT16                            sizeOfSelect;\r
   UINT8                             pcrSelect[1];\r
 } TPM_PCR_SELECTION;\r
 \r
-//\r
-// Part 2, section 8.2: TPM_PCR_COMPOSITE\r
-//   Size of pcrValue[] indicated by valueSize\r
-//\r
+///\r
+/// Part 2, section 8.2: TPM_PCR_COMPOSITE\r
+///   Size of pcrValue[] indicated by valueSize\r
+///\r
 typedef struct tdTPM_PCR_COMPOSITE {\r
   TPM_PCR_SELECTION                 select;\r
   UINT32                            valueSize;\r
   TPM_PCRVALUE                      pcrValue[1];\r
 } TPM_PCR_COMPOSITE;\r
 \r
-//\r
-// Part 2, section 8.3: TPM_PCR_INFO\r
-//\r
+///\r
+/// Part 2, section 8.3: TPM_PCR_INFO\r
+///\r
 typedef struct tdTPM_PCR_INFO {\r
   TPM_PCR_SELECTION                 pcrSelection;\r
   TPM_COMPOSITE_HASH                digestAtRelease;\r
   TPM_COMPOSITE_HASH                digestAtCreation;\r
 } TPM_PCR_INFO;\r
 \r
-//\r
-// Part 2, section 8.6: TPM_LOCALITY_SELECTION\r
-//\r
+///\r
+/// Part 2, section 8.6: TPM_LOCALITY_SELECTION\r
+///\r
 typedef UINT8                       TPM_LOCALITY_SELECTION;\r
 \r
 #define TPM_LOC_FOUR                ((UINT8) 0x10)\r
@@ -698,9 +699,9 @@ typedef UINT8                       TPM_LOCALITY_SELECTION;
 #define TPM_LOC_ONE                 ((UINT8) 0x02)\r
 #define TPM_LOC_ZERO                ((UINT8) 0x01)\r
 \r
-//\r
-// Part 2, section 8.4: TPM_PCR_INFO_LONG\r
-//\r
+///\r
+/// Part 2, section 8.4: TPM_PCR_INFO_LONG\r
+///\r
 typedef struct tdTPM_PCR_INFO_LONG {\r
   TPM_STRUCTURE_TAG                 tag;\r
   TPM_LOCALITY_SELECTION            localityAtCreation;\r
@@ -711,18 +712,18 @@ typedef struct tdTPM_PCR_INFO_LONG {
   TPM_COMPOSITE_HASH                digestAtRelease;\r
 } TPM_PCR_INFO_LONG;\r
 \r
-//\r
-// Part 2, section 8.5: TPM_PCR_INFO_SHORT\r
-//\r
+///\r
+/// Part 2, section 8.5: TPM_PCR_INFO_SHORT\r
+///\r
 typedef struct tdTPM_PCR_INFO_SHORT{\r
   TPM_PCR_SELECTION                 pcrSelection;\r
   TPM_LOCALITY_SELECTION            localityAtRelease;\r
   TPM_COMPOSITE_HASH                digestAtRelease;\r
 } TPM_PCR_INFO_SHORT;\r
 \r
-//\r
-// Part 2, section 8.8: TPM_PCR_ATTRIBUTES\r
-//\r
+///\r
+/// Part 2, section 8.8: TPM_PCR_ATTRIBUTES\r
+///\r
 typedef struct tdTPM_PCR_ATTRIBUTES{\r
   BOOLEAN                           pcrReset;\r
   TPM_LOCALITY_SELECTION            pcrExtendLocal;\r
@@ -733,11 +734,11 @@ typedef struct tdTPM_PCR_ATTRIBUTES{
 // Part 2, section 9: Storage Structures\r
 //\r
 \r
-//\r
-// Part 2, section 9.1: TPM_STORED_DATA\r
-//   [size_is(sealInfoSize)] BYTE* sealInfo;\r
-//   [size_is(encDataSize)] BYTE* encData;\r
-//\r
+///\r
+/// Part 2, section 9.1: TPM_STORED_DATA\r
+///   [size_is(sealInfoSize)] BYTE* sealInfo;\r
+///   [size_is(encDataSize)] BYTE* encData;\r
+///\r
 typedef struct tdTPM_STORED_DATA {\r
   TPM_STRUCT_VER                    ver;\r
   UINT32                            sealInfoSize;\r
@@ -746,11 +747,11 @@ typedef struct tdTPM_STORED_DATA {
   UINT8                             *encData;\r
 } TPM_STORED_DATA;\r
 \r
-//\r
-// Part 2, section 9.2: TPM_STORED_DATA12\r
-//   [size_is(sealInfoSize)] BYTE* sealInfo;\r
-//   [size_is(encDataSize)] BYTE* encData;\r
-//\r
+///\r
+/// Part 2, section 9.2: TPM_STORED_DATA12\r
+///   [size_is(sealInfoSize)] BYTE* sealInfo;\r
+///   [size_is(encDataSize)] BYTE* encData;\r
+///\r
 typedef struct tdTPM_STORED_DATA12 {\r
   TPM_STRUCTURE_TAG                 tag;\r
   TPM_ENTITY_TYPE                   et;\r
@@ -760,10 +761,10 @@ typedef struct tdTPM_STORED_DATA12 {
   UINT8                             *encData;\r
 } TPM_STORED_DATA12;\r
 \r
-//\r
-// Part 2, section 9.3: TPM_SEALED_DATA\r
-//   [size_is(dataSize)] BYTE* data;\r
-//\r
+///\r
+/// Part 2, section 9.3: TPM_SEALED_DATA\r
+///   [size_is(dataSize)] BYTE* data;\r
+///\r
 typedef struct tdTPM_SEALED_DATA {\r
   TPM_PAYLOAD_TYPE                  payload;\r
   TPM_SECRET                        authData;\r
@@ -773,10 +774,10 @@ typedef struct tdTPM_SEALED_DATA {
   UINT8                             *data;\r
 } TPM_SEALED_DATA;\r
 \r
-//\r
-// Part 2, section 9.4: TPM_SYMMETRIC_KEY\r
-//   [size_is(size)] BYTE* data;\r
-//\r
+///\r
+/// Part 2, section 9.4: TPM_SYMMETRIC_KEY\r
+///   [size_is(size)] BYTE* data;\r
+///\r
 typedef struct tdTPM_SYMMETRIC_KEY {\r
   TPM_ALGORITHM_ID                  algId;\r
   TPM_ENC_SCHEME                    encScheme;\r
@@ -784,9 +785,9 @@ typedef struct tdTPM_SYMMETRIC_KEY {
   UINT8                             *data;\r
 } TPM_SYMMETRIC_KEY;\r
 \r
-//\r
-// Part 2, section 9.5: TPM_BOUND_DATA\r
-//\r
+///\r
+/// Part 2, section 9.5: TPM_BOUND_DATA\r
+///\r
 typedef struct tdTPM_BOUND_DATA {\r
   TPM_STRUCT_VER                    ver;\r
   TPM_PAYLOAD_TYPE                  payload;\r
@@ -801,10 +802,10 @@ typedef struct tdTPM_BOUND_DATA {
 // Section 10.1, 10.4, and 10.5 have been defined previously\r
 //\r
 \r
-//\r
-// Part 2, section 10.2: TPM_KEY\r
-//   [size_is(encDataSize)] BYTE* encData;\r
-//\r
+///\r
+/// Part 2, section 10.2: TPM_KEY\r
+///   [size_is(encDataSize)] BYTE* encData;\r
+///\r
 typedef struct tdTPM_KEY{\r
   TPM_STRUCT_VER                    ver;\r
   TPM_KEY_USAGE                     keyUsage;\r
@@ -818,10 +819,10 @@ typedef struct tdTPM_KEY{
   UINT8                             *encData;\r
 } TPM_KEY;\r
 \r
-//\r
-// Part 2, section 10.3: TPM_KEY12\r
-//   [size_is(encDataSize)] BYTE* encData;\r
-//\r
+///\r
+/// Part 2, section 10.3: TPM_KEY12\r
+///   [size_is(encDataSize)] BYTE* encData;\r
+///\r
 typedef struct tdTPM_KEY12{\r
   TPM_STRUCTURE_TAG                 tag;\r
   UINT16                            fill;\r
@@ -836,18 +837,18 @@ typedef struct tdTPM_KEY12{
   UINT8                             *encData;\r
 } TPM_KEY12;\r
 \r
-//\r
-// Part 2, section 10.7: TPM_STORE_PRIVKEY\r
-//   [size_is(keyLength)] BYTE* key;\r
-//\r
+///\r
+/// Part 2, section 10.7: TPM_STORE_PRIVKEY\r
+///   [size_is(keyLength)] BYTE* key;\r
+///\r
 typedef struct tdTPM_STORE_PRIVKEY {\r
   UINT32                            keyLength;\r
   UINT8                             *key;\r
 } TPM_STORE_PRIVKEY;\r
 \r
-//\r
-// Part 2, section 10.6: TPM_STORE_ASYMKEY\r
-//\r
+///\r
+/// Part 2, section 10.6: TPM_STORE_ASYMKEY\r
+///\r
 typedef struct tdTPM_STORE_ASYMKEY {                // pos len total\r
   TPM_PAYLOAD_TYPE                  payload;        // 0    1   1\r
   TPM_SECRET                        usageAuth;      // 1    20  21\r
@@ -856,10 +857,10 @@ typedef struct tdTPM_STORE_ASYMKEY {                // pos len total
   TPM_STORE_PRIVKEY                 privKey;        // 61 132-151 193-214\r
 } TPM_STORE_ASYMKEY;\r
 \r
-//\r
-// Part 2, section 10.8: TPM_MIGRATE_ASYMKEY\r
-//   [size_is(partPrivKeyLen)] BYTE* partPrivKey;\r
-//\r
+///\r
+/// Part 2, section 10.8: TPM_MIGRATE_ASYMKEY\r
+///   [size_is(partPrivKeyLen)] BYTE* partPrivKey;\r
+///\r
 typedef struct tdTPM_MIGRATE_ASYMKEY {              // pos  len  total\r
   TPM_PAYLOAD_TYPE                  payload;        //   0    1       1\r
   TPM_SECRET                        usageAuth;      //   1   20      21\r
@@ -868,18 +869,18 @@ typedef struct tdTPM_MIGRATE_ASYMKEY {              // pos  len  total
   UINT8                             *partPrivKey;   //  45 112-127 157-172\r
 } TPM_MIGRATE_ASYMKEY;\r
 \r
-//\r
-// Part 2, section 10.9: TPM_KEY_CONTROL\r
-//\r
+///\r
+/// Part 2, section 10.9: TPM_KEY_CONTROL\r
+///\r
 #define TPM_KEY_CONTROL_OWNER_EVICT ((UINT32) 0x00000001)\r
 \r
 //\r
 // Part 2, section 11: Signed Structures\r
 //\r
 \r
-//\r
-// Part 2, section 11.1: TPM_CERTIFY_INFO Structure\r
-//\r
+///\r
+/// Part 2, section 11.1: TPM_CERTIFY_INFO Structure\r
+///\r
 typedef struct tdTPM_CERTIFY_INFO {\r
   TPM_STRUCT_VER                  version;\r
   TPM_KEY_USAGE                   keyUsage;\r
@@ -893,9 +894,9 @@ typedef struct tdTPM_CERTIFY_INFO {
   UINT8                           *PCRInfo;\r
 } TPM_CERTIFY_INFO;\r
 \r
-//\r
-// Part 2, section 11.2: TPM_CERTIFY_INFO2 Structure\r
-//\r
+///\r
+/// Part 2, section 11.2: TPM_CERTIFY_INFO2 Structure\r
+///\r
 typedef struct tdTPM_CERTIFY_INFO2 {\r
   TPM_STRUCTURE_TAG               tag;\r
   UINT8                           fill;\r
@@ -913,9 +914,9 @@ typedef struct tdTPM_CERTIFY_INFO2 {
   UINT8                           *migrationAuthority;\r
 } TPM_CERTIFY_INFO2;\r
 \r
-//\r
-// Part 2, section 11.3 TPM_QUOTE_INFO Structure\r
-//\r
+///\r
+/// Part 2, section 11.3 TPM_QUOTE_INFO Structure\r
+///\r
 typedef struct tdTPM_QUOTE_INFO {\r
   TPM_STRUCT_VER                  version;\r
   UINT8                           fixed[4];\r
@@ -923,9 +924,9 @@ typedef struct tdTPM_QUOTE_INFO {
   TPM_NONCE                       externalData;\r
 } TPM_QUOTE_INFO;\r
 \r
-//\r
-// Part 2, section 11.4 TPM_QUOTE_INFO2 Structure\r
-//\r
+///\r
+/// Part 2, section 11.4 TPM_QUOTE_INFO2 Structure\r
+///\r
 typedef struct tdTPM_QUOTE_INFO2 {\r
   TPM_STRUCTURE_TAG               tag;\r
   UINT8                           fixed[4];\r
@@ -937,9 +938,9 @@ typedef struct tdTPM_QUOTE_INFO2 {
 // Part 2, section 12: Identity Structures\r
 //\r
 \r
-//\r
-// Part 2, section 12.1 TPM_EK_BLOB\r
-//\r
+///\r
+/// Part 2, section 12.1 TPM_EK_BLOB\r
+///\r
 typedef struct tdTPM_EK_BLOB {\r
   TPM_STRUCTURE_TAG               tag;\r
   TPM_EK_TYPE                     ekType;\r
@@ -947,9 +948,9 @@ typedef struct tdTPM_EK_BLOB {
   UINT8                           *blob;\r
 } TPM_EK_BLOB;\r
 \r
-//\r
-// Part 2, section 12.2 TPM_EK_BLOB_ACTIVATE\r
-//\r
+///\r
+/// Part 2, section 12.2 TPM_EK_BLOB_ACTIVATE\r
+///\r
 typedef struct tdTPM_EK_BLOB_ACTIVATE {\r
   TPM_STRUCTURE_TAG               tag;\r
   TPM_SYMMETRIC_KEY               sessionKey;\r
@@ -957,18 +958,18 @@ typedef struct tdTPM_EK_BLOB_ACTIVATE {
   TPM_PCR_INFO_SHORT              pcrInfo;\r
 } TPM_EK_BLOB_ACTIVATE;\r
 \r
-//\r
-// Part 2, section 12.3 TPM_EK_BLOB_AUTH\r
-//\r
+///\r
+/// Part 2, section 12.3 TPM_EK_BLOB_AUTH\r
+///\r
 typedef struct tdTPM_EK_BLOB_AUTH {\r
   TPM_STRUCTURE_TAG               tag;\r
   TPM_SECRET                      authValue;\r
 } TPM_EK_BLOB_AUTH;\r
 \r
 \r
-//\r
-// Part 2, section 12.5 TPM_IDENTITY_CONTENTS\r
-//\r
+///\r
+/// Part 2, section 12.5 TPM_IDENTITY_CONTENTS\r
+///\r
 typedef struct tdTPM_IDENTITY_CONTENTS {\r
   TPM_STRUCT_VER                  ver;\r
   UINT32                          ordinal;\r
@@ -976,9 +977,9 @@ typedef struct tdTPM_IDENTITY_CONTENTS {
   TPM_PUBKEY                      identityPubKey;\r
 } TPM_IDENTITY_CONTENTS;\r
 \r
-//\r
-// Part 2, section 12.6 TPM_IDENTITY_REQ\r
-//\r
+///\r
+/// Part 2, section 12.6 TPM_IDENTITY_REQ\r
+///\r
 typedef struct tdTPM_IDENTITY_REQ {\r
   UINT32                          asymSize;\r
   UINT32                          symSize;\r
@@ -988,9 +989,9 @@ typedef struct tdTPM_IDENTITY_REQ {
   UINT8                           *symBlob;\r
 } TPM_IDENTITY_REQ;\r
 \r
-//\r
-// Part 2, section 12.7 TPM_IDENTITY_PROOF\r
-//\r
+///\r
+/// Part 2, section 12.7 TPM_IDENTITY_PROOF\r
+///\r
 typedef struct tdTPM_IDENTITY_PROOF {\r
   TPM_STRUCT_VER                  ver;\r
   UINT32                          labelSize;\r
@@ -1006,27 +1007,27 @@ typedef struct tdTPM_IDENTITY_PROOF {
   UINT8                           *conformanceCredential;\r
 } TPM_IDENTITY_PROOF;\r
 \r
-//\r
-// Part 2, section 12.8 TPM_ASYM_CA_CONTENTS\r
-//\r
+///\r
+/// Part 2, section 12.8 TPM_ASYM_CA_CONTENTS\r
+///\r
 typedef struct tdTPM_ASYM_CA_CONTENTS {\r
   TPM_SYMMETRIC_KEY               sessionKey;\r
   TPM_DIGEST                      idDigest;\r
 } TPM_ASYM_CA_CONTENTS;\r
 \r
-//\r
-// Part 2, section 12.9 TPM_SYM_CA_ATTESTATION\r
-//\r
+///\r
+/// Part 2, section 12.9 TPM_SYM_CA_ATTESTATION\r
+///\r
 typedef struct tdTPM_SYM_CA_ATTESTATION {\r
   UINT32                          credSize;\r
   TPM_KEY_PARMS                   algorithm;\r
   UINT8                           *credential;\r
 } TPM_SYM_CA_ATTESTATION;\r
 \r
-//\r
-// Part 2, section 15: Tick Structures\r
-//   Placed here out of order because definitions are used in section 13.\r
-//\r
+///\r
+/// Part 2, section 15: Tick Structures\r
+///   Placed here out of order because definitions are used in section 13.\r
+///\r
 typedef struct tdTPM_CURRENT_TICKS {\r
   TPM_STRUCTURE_TAG                 tag;\r
   UINT64                            currentTicks;\r
@@ -1034,13 +1035,13 @@ typedef struct tdTPM_CURRENT_TICKS {
   TPM_NONCE                         tickNonce;\r
 } TPM_CURRENT_TICKS;\r
 \r
-//\r
-// Part 2, section 13: Transport structures\r
-//\r
+///\r
+/// Part 2, section 13: Transport structures\r
+///\r
 \r
-//\r
-// Part 2, section 13.1: TPM _TRANSPORT_PUBLIC\r
-//\r
+///\r
+/// Part 2, section 13.1: TPM _TRANSPORT_PUBLIC\r
+///\r
 typedef struct tdTPM_TRANSPORT_PUBLIC {\r
   TPM_STRUCTURE_TAG               tag;\r
   TPM_TRANSPORT_ATTRIBUTES        transAttributes;\r
@@ -1055,9 +1056,9 @@ typedef struct tdTPM_TRANSPORT_PUBLIC {
 #define TPM_TRANSPORT_LOG           ((UINT32)0x00000002)\r
 #define TPM_TRANSPORT_EXCLUSIVE     ((UINT32)0x00000004)\r
 \r
-//\r
-// Part 2, section 13.2 TPM_TRANSPORT_INTERNAL\r
-//\r
+///\r
+/// Part 2, section 13.2 TPM_TRANSPORT_INTERNAL\r
+///\r
 typedef struct tdTPM_TRANSPORT_INTERNAL {\r
   TPM_STRUCTURE_TAG               tag;\r
   TPM_AUTHDATA                    authData;\r
@@ -1067,18 +1068,18 @@ typedef struct tdTPM_TRANSPORT_INTERNAL {
   TPM_DIGEST                      transDigest;\r
 } TPM_TRANSPORT_INTERNAL;\r
 \r
-//\r
-// Part 2, section 13.3 TPM_TRANSPORT_LOG_IN structure\r
-//\r
+///\r
+/// Part 2, section 13.3 TPM_TRANSPORT_LOG_IN structure\r
+///\r
 typedef struct tdTPM_TRANSPORT_LOG_IN {\r
   TPM_STRUCTURE_TAG               tag;\r
   TPM_DIGEST                      parameters;\r
   TPM_DIGEST                      pubKeyHash;\r
 } TPM_TRANSPORT_LOG_IN;\r
 \r
-//\r
-// Part 2, section 13.4 TPM_TRANSPORT_LOG_OUT structure\r
-//\r
+///\r
+/// Part 2, section 13.4 TPM_TRANSPORT_LOG_OUT structure\r
+///\r
 typedef struct tdTPM_TRANSPORT_LOG_OUT {\r
   TPM_STRUCTURE_TAG               tag;\r
   TPM_CURRENT_TICKS               currentTicks;\r
@@ -1086,9 +1087,9 @@ typedef struct tdTPM_TRANSPORT_LOG_OUT {
   TPM_MODIFIER_INDICATOR          locality;\r
 } TPM_TRANSPORT_LOG_OUT;\r
 \r
-//\r
-// Part 2, section 13.5 TPM_TRANSPORT_AUTH structure\r
-//\r
+///\r
+/// Part 2, section 13.5 TPM_TRANSPORT_AUTH structure\r
+///\r
 typedef struct tdTPM_TRANSPORT_AUTH {\r
   TPM_STRUCTURE_TAG               tag;\r
   TPM_AUTHDATA                    authData;\r
@@ -1098,18 +1099,18 @@ typedef struct tdTPM_TRANSPORT_AUTH {
 // Part 2, section 14: Audit Structures\r
 //\r
 \r
-//\r
-// Part 2, section 14.1 TPM_AUDIT_EVENT_IN structure\r
-//\r
+///\r
+/// Part 2, section 14.1 TPM_AUDIT_EVENT_IN structure\r
+///\r
 typedef struct tdTPM_AUDIT_EVENT_IN {\r
   TPM_STRUCTURE_TAG               tag;\r
   TPM_DIGEST                      inputParms;\r
   TPM_COUNTER_VALUE               auditCount;\r
 } TPM_AUDIT_EVENT_IN;\r
 \r
-//\r
-// Part 2, section 14.2 TPM_AUDIT_EVENT_OUT structure\r
-//\r
+///\r
+/// Part 2, section 14.2 TPM_AUDIT_EVENT_OUT structure\r
+///\r
 typedef struct tdTPM_AUDIT_EVENT_OUT {\r
   TPM_STRUCTURE_TAG               tag;\r
   TPM_COMMAND_CODE                ordinal;\r
@@ -1388,9 +1389,9 @@ typedef struct tdTPM_AUDIT_EVENT_OUT {
 // Part 2, section 18: Context structures\r
 //\r
 \r
-//\r
-// Part 2, section 18.1: TPM_CONTEXT_BLOB\r
-//\r
+///\r
+/// Part 2, section 18.1: TPM_CONTEXT_BLOB\r
+///\r
 typedef struct tdTPM_CONTEXT_BLOB {\r
   TPM_STRUCTURE_TAG               tag;\r
   TPM_RESOURCE_TYPE               resourceType;\r
@@ -1404,9 +1405,9 @@ typedef struct tdTPM_CONTEXT_BLOB {
   UINT8                           *sensitiveData;\r
 } TPM_CONTEXT_BLOB;\r
 \r
-//\r
-// Part 2, section 18.2 TPM_CONTEXT_SENSITIVE\r
-//\r
+///\r
+/// Part 2, section 18.2 TPM_CONTEXT_SENSITIVE\r
+///\r
 typedef struct tdTPM_CONTEXT_SENSITIVE {\r
   TPM_STRUCTURE_TAG               tag;\r
   TPM_NONCE                       contextNonce;\r
@@ -1438,15 +1439,20 @@ typedef struct tdTPM_CONTEXT_SENSITIVE {
 #define TPM_NV_INDEX_PERIPHERAL_BASE   ((UINT32)0x00011500)\r
 #define TPM_NV_INDEX_GROUP_RESV_BASE   ((UINT32)0x00010000)\r
 \r
-//\r
-// The typedefs TPM_NV_PER_ATTRIBUTES (not present in TPM 1.2 Spec. have been added \r
-// and structure fields that were to hold the following values\r
-//\r
+///\r
+/// The typedefs TPM_NV_PER_ATTRIBUTES (not present in TPM 1.2 Spec. have been added \r
+/// and structure fields that were to hold the following values\r
+///\r
 typedef UINT32 TPM_NV_PER_ATTRIBUTES;\r
 \r
-//\r
-// Part 2, section 19.2: TPM_NV_ATTRIBUTES\r
-//\r
+///\r
+/// Part 2, section 19.2: TPM_NV_ATTRIBUTES\r
+///\r
+typedef struct tdTPM_NV_ATTRIBUTES {\r
+  TPM_STRUCTURE_TAG               tag;\r
+  TPM_NV_PER_ATTRIBUTES           attributes;\r
+} TPM_NV_ATTRIBUTES;\r
+\r
 #define TPM_NV_PER_READ_STCLEAR        (BIT31)\r
 #define TPM_NV_PER_AUTHREAD            (BIT18)\r
 #define TPM_NV_PER_OWNERREAD           (BIT17)\r
@@ -1459,14 +1465,9 @@ typedef UINT32 TPM_NV_PER_ATTRIBUTES;
 #define TPM_NV_PER_OWNERWRITE          (BIT1)\r
 #define TPM_NV_PER_PPWRITE             (BIT0)\r
 \r
-typedef struct tdTPM_NV_ATTRIBUTES {\r
-  TPM_STRUCTURE_TAG               tag;\r
-  TPM_NV_PER_ATTRIBUTES           attributes;\r
-} TPM_NV_ATTRIBUTES;\r
-\r
-//\r
-// Part 2, section 19.3: TPM_NV_DATA_PUBLIC\r
-//\r
+///\r
+/// Part 2, section 19.3: TPM_NV_DATA_PUBLIC\r
+///\r
 typedef struct tdTPM_NV_DATA_PUBLIC {\r
   TPM_STRUCTURE_TAG               tag;\r
   TPM_NV_INDEX                    nvIndex;\r
@@ -1567,16 +1568,16 @@ typedef struct tdTPM_DELEGATIONS {
 #define TPM_DELEGATE_ADMIN_LOCK           (BIT1)\r
 #define TPM_FAMFLAG_ENABLE                (BIT0)\r
 \r
-//\r
-// Part 2, section 20.4: TPM_FAMILY_LABEL\r
-//\r
+///\r
+/// Part 2, section 20.4: TPM_FAMILY_LABEL\r
+///\r
 typedef struct tdTPM_FAMILY_LABEL {\r
   UINT8                           label;\r
 } TPM_FAMILY_LABEL;\r
 \r
-//\r
-// Part 2, section 20.5: TPM_FAMILY_TABLE_ENTRY\r
-//\r
+///\r
+/// Part 2, section 20.5: TPM_FAMILY_TABLE_ENTRY\r
+///\r
 typedef struct tdTPM_FAMILY_TABLE_ENTRY {\r
   TPM_STRUCTURE_TAG               tag;\r
   TPM_FAMILY_LABEL                label;\r
@@ -1594,16 +1595,16 @@ typedef struct tdTPM_FAMILY_TABLE{
   TPM_FAMILY_TABLE_ENTRY famTableRow[TPM_NUM_FAMILY_TABLE_ENTRY_MIN];\r
 } TPM_FAMILY_TABLE;\r
 \r
-//\r
-// Part 2, section 20.7: TPM_DELEGATE_LABEL\r
-//\r
+///\r
+/// Part 2, section 20.7: TPM_DELEGATE_LABEL\r
+///\r
 typedef struct tdTPM_DELEGATE_LABEL {\r
   UINT8                           label;\r
 } TPM_DELEGATE_LABEL;\r
 \r
-//\r
-// Part 2, section 20.8: TPM_DELEGATE_PUBLIC\r
-//\r
+///\r
+/// Part 2, section 20.8: TPM_DELEGATE_PUBLIC\r
+///\r
 typedef struct tdTPM_DELEGATE_PUBLIC {\r
   TPM_STRUCTURE_TAG               tag;\r
   TPM_DELEGATE_LABEL              label;\r
@@ -1613,9 +1614,9 @@ typedef struct tdTPM_DELEGATE_PUBLIC {
   TPM_FAMILY_VERIFICATION         verificationCount;\r
 } TPM_DELEGATE_PUBLIC;\r
 \r
-//\r
-// Part 2, section 20.9: TPM_DELEGATE_TABLE_ROW\r
-//\r
+///\r
+/// Part 2, section 20.9: TPM_DELEGATE_TABLE_ROW\r
+///\r
 typedef struct tdTPM_DELEGATE_TABLE_ROW {\r
   TPM_STRUCTURE_TAG               tag;\r
   TPM_DELEGATE_PUBLIC             pub;\r
@@ -1631,17 +1632,17 @@ typedef struct tdTPM_DELEGATE_TABLE{
   TPM_DELEGATE_TABLE_ROW delRow[TPM_NUM_DELEGATE_TABLE_ENTRY_MIN];\r
 } TPM_DELEGATE_TABLE;\r
 \r
-//\r
-// Part 2, section 20.11: TPM_DELEGATE_SENSITIVE\r
-//\r
+///\r
+/// Part 2, section 20.11: TPM_DELEGATE_SENSITIVE\r
+///\r
 typedef struct tdTPM_DELEGATE_SENSITIVE {\r
   TPM_STRUCTURE_TAG               tag;\r
   TPM_SECRET                      authValue;\r
 } TPM_DELEGATE_SENSITIVE;\r
 \r
-//\r
-// Part 2, section 20.12: TPM_DELEGATE_OWNER_BLOB\r
-//\r
+///\r
+/// Part 2, section 20.12: TPM_DELEGATE_OWNER_BLOB\r
+///\r
 typedef struct tdTPM_DELEGATE_OWNER_BLOB {\r
   TPM_STRUCTURE_TAG               tag;\r
   TPM_DELEGATE_PUBLIC             pub;\r
@@ -1652,9 +1653,9 @@ typedef struct tdTPM_DELEGATE_OWNER_BLOB {
   UINT8                           *sensitiveArea;\r
 } TPM_DELEGATE_OWNER_BLOB;\r
 \r
-//\r
-// Part 2, section 20.13: TTPM_DELEGATE_KEY_BLOB\r
-//\r
+///\r
+/// Part 2, section 20.13: TTPM_DELEGATE_KEY_BLOB\r
+///\r
 typedef struct tdTPM_DELEGATE_KEY_BLOB {\r
   TPM_STRUCTURE_TAG               tag;\r
   TPM_DELEGATE_PUBLIC             pub;\r
@@ -1734,10 +1735,10 @@ typedef struct tdTPM_DELEGATE_KEY_BLOB {
 #define TPM_CAP_PROP_MAX_NV_AVAILABLE   ((TPM_CAPABILITY_AREA) 0x00000123)\r
 #define TPM_CAP_PROP_INPUT_BUFFER       ((TPM_CAPABILITY_AREA) 0x00000124)\r
 \r
-//\r
-// Part 2, section 21.6: TPM_CAP_VERSION_INFO\r
-//   [size_is(vendorSpecificSize)] BYTE* vendorSpecific;\r
-//\r
+///\r
+/// Part 2, section 21.6: TPM_CAP_VERSION_INFO\r
+///   [size_is(vendorSpecificSize)] BYTE* vendorSpecific;\r
+///\r
 typedef struct tdTPM_CAP_VERSION_INFO {\r
   TPM_STRUCTURE_TAG                 tag;\r
   TPM_VERSION                       version;\r
@@ -1772,9 +1773,9 @@ typedef struct tdTPM_CAP_VERSION_INFO {
 #define TPM_DAA_power0                 (104)\r
 #define TPM_DAA_power1                 (1024)\r
 \r
-//\r
-// Part 2, section 22.3: TPM_DAA_ISSUER\r
-//\r
+///\r
+/// Part 2, section 22.3: TPM_DAA_ISSUER\r
+///\r
 typedef struct tdTPM_DAA_ISSUER {\r
   TPM_STRUCTURE_TAG               tag;\r
   TPM_DIGEST                      DAA_digest_R0;\r
@@ -1786,9 +1787,9 @@ typedef struct tdTPM_DAA_ISSUER {
   UINT8                           DAA_generic_q[26];\r
 } TPM_DAA_ISSUER;\r
 \r
-//\r
-// Part 2, section 22.4: TPM_DAA_TPM\r
-//\r
+///\r
+/// Part 2, section 22.4: TPM_DAA_TPM\r
+///\r
 typedef struct tdTPM_DAA_TPM {\r
   TPM_STRUCTURE_TAG               tag;\r
   TPM_DIGEST                      DAA_digestIssuer;\r
@@ -1798,9 +1799,9 @@ typedef struct tdTPM_DAA_TPM {
   UINT32                          DAA_count;\r
 } TPM_DAA_TPM;\r
 \r
-//\r
-// Part 2, section 22.5: TPM_DAA_CONTEXT\r
-//\r
+///\r
+/// Part 2, section 22.5: TPM_DAA_CONTEXT\r
+///\r
 typedef struct tdTPM_DAA_CONTEXT {\r
   TPM_STRUCTURE_TAG               tag;\r
   TPM_DIGEST                      DAA_digestContext;\r
@@ -1810,18 +1811,18 @@ typedef struct tdTPM_DAA_CONTEXT {
   UINT8                           DAA_stage;\r
 } TPM_DAA_CONTEXT;\r
 \r
-//\r
-// Part 2, section 22.6: TPM_DAA_JOINDATA\r
-//\r
+///\r
+/// Part 2, section 22.6: TPM_DAA_JOINDATA\r
+///\r
 typedef struct tdTPM_DAA_JOINDATA {\r
   UINT8                           DAA_join_u0[128];\r
   UINT8                           DAA_join_u1[138];\r
   TPM_DIGEST                      DAA_digest_n0;\r
 } TPM_DAA_JOINDATA;\r
 \r
-//\r
-// Part 2, section 22.8: TPM_DAA_BLOB\r
-//\r
+///\r
+/// Part 2, section 22.8: TPM_DAA_BLOB\r
+///\r
 typedef struct tdTPM_DAA_BLOB {\r
   TPM_STRUCTURE_TAG               tag;\r
   TPM_RESOURCE_TYPE               resourceType;\r
@@ -1833,9 +1834,9 @@ typedef struct tdTPM_DAA_BLOB {
   UINT8                           *sensitiveData;\r
 } TPM_DAA_BLOB;\r
 \r
-//\r
-// Part 2, section 22.9: TPM_DAA_SENSITIVE\r
-//\r
+///\r
+/// Part 2, section 22.9: TPM_DAA_SENSITIVE\r
+///\r
 typedef struct tdTPM_DAA_SENSITIVE {\r
   TPM_STRUCTURE_TAG               tag;\r
   UINT32                          internalSize;\r
@@ -1847,18 +1848,18 @@ typedef struct tdTPM_DAA_SENSITIVE {
 // Part 2, section 23: Redirection\r
 //\r
 \r
-//\r
-// Part 2 section 23.1: TPM_REDIR_COMMAND\r
-// This section defines exactly one value but does not\r
-// give it a name. The definition of TPM_SetRedirection in Part3\r
-// refers to exactly one name but does not give its value. We join\r
-// them here.\r
-//\r
+///\r
+/// Part 2 section 23.1: TPM_REDIR_COMMAND\r
+/// This section defines exactly one value but does not\r
+/// give it a name. The definition of TPM_SetRedirection in Part3\r
+/// refers to exactly one name but does not give its value. We join\r
+/// them here.\r
+///\r
 #define TPM_REDIR_GPIO              (0x00000001)\r
 \r
-//\r
-// TPM Command & Response Headers defined in Part 3\r
-//\r
+///\r
+/// TPM Command & Response Headers defined in Part 3\r
+///\r
 typedef struct tdTPM_RQU_COMMAND_HDR {\r
   TPM_STRUCTURE_TAG                 tag;\r
   UINT32                            paramSize;\r