1 /** @file 2 Internal structure for Var Check Pcd. 3 4 Copyright (c) 2015, Intel Corporation. All rights reserved.<BR> 5 This program and the accompanying materials 6 are licensed and made available under the terms and conditions of the BSD License 7 which accompanies this distribution. The full text of the license may be found at 8 http://opensource.org/licenses/bsd-license.php 9 10 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, 11 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. 12 13 **/ 14 15 #ifndef _VAR_CHECK_STRUCTURE_H_ 16 #define _VAR_CHECK_STRUCTURE_H_ 17 18 // 19 // Alignment for PCD Variable and check data header. 20 // 21 #define HEADER_ALIGNMENT 4 22 #define HEADER_ALIGN(Header) (((UINTN) (Header) + HEADER_ALIGNMENT - 1) & (~(HEADER_ALIGNMENT - 1))) 23 24 #pragma pack (1) 25 26 #define VAR_CHECK_PCD_REVISION 0x0001 27 28 typedef enum { 29 VarCheckPcdVariableHeader, 30 VarCheckPcdValidList, 31 VarCheckPcdValidRange, 32 VarCheckPcdCheckTypeMax, 33 } VAR_CHECK_PCD_CHECK_TYPE; 34 35 typedef struct { 36 UINT16 Revision; 37 UINT16 HeaderLength; 38 UINT32 Length; // Length include this header 39 UINT8 Type; 40 UINT8 Reserved[3]; 41 UINT32 Attributes; 42 EFI_GUID Guid; 43 //CHAR16 Name[]; 44 } VAR_CHECK_PCD_VARIABLE_HEADER; 45 46 typedef struct { 47 UINT8 Type; 48 UINT8 Length; // Length include this header 49 UINT16 VarOffset; 50 UINT8 StorageWidth; 51 } VAR_CHECK_PCD_VALID_DATA_HEADER; 52 53 typedef struct { 54 UINT8 Type; 55 UINT8 Length; // Length include this header 56 UINT16 VarOffset; 57 UINT8 StorageWidth; 58 //UINTx Data[]; // x = UINT8/UINT16/UINT32/UINT64; 59 } VAR_CHECK_PCD_VALID_LIST; 60 61 //typedef struct { 62 // UINTx Minimum; // x = UINT8/UINT16/UINT32/UINT64 63 // UINTx Maximum; // x = UINT8/UINT16/UINT32/UINT64 64 //} VAR_CHECK_PCD_VALID_RANGE_DATA; 65 66 typedef struct { 67 UINT8 Type; 68 UINT8 Length; // Length include this header 69 UINT16 VarOffset; 70 UINT8 StorageWidth; 71 // VAR_CHECK_PCD_VALID_RANGE_DATA ValidRange[]; 72 } VAR_CHECK_PCD_VALID_RANGE; 73 74 #pragma pack () 75 76 #endif