+VARIABLE_HEADER *\r
+GetStartPointer (\r
+ IN VARIABLE_STORE_HEADER *VarStoreHeader\r
+ )\r
+/*++\r
+\r
+Routine Description:\r
+\r
+ This code gets the pointer to the first variable memory pointer byte\r
+\r
+Arguments:\r
+\r
+ VarStoreHeader Pointer to the Variable Store Header.\r
+\r
+Returns:\r
+\r
+ VARIABLE_HEADER* Pointer to last unavailable Variable Header\r
+\r
+--*/\r
+{\r
+ //\r
+ // The end of variable store\r
+ //\r
+ return (VARIABLE_HEADER *) HEADER_ALIGN (VarStoreHeader + 1);\r
+}\r
+\r
+VARIABLE_HEADER *\r
+GetEndPointer (\r
+ IN VARIABLE_STORE_HEADER *VarStoreHeader\r
+ )\r
+/*++\r
+\r
+Routine Description:\r
+\r
+ This code gets the pointer to the last variable memory pointer byte\r
+\r
+Arguments:\r
+\r
+ VarStoreHeader Pointer to the Variable Store Header.\r
+\r
+Returns:\r
+\r
+ VARIABLE_HEADER* Pointer to last unavailable Variable Header\r
+\r
+--*/\r
+{\r
+ //\r
+ // The end of variable store\r
+ //\r
+ return (VARIABLE_HEADER *) HEADER_ALIGN ((UINTN) VarStoreHeader + VarStoreHeader->Size);\r
+}\r
+\r
+UINT32\r
+NameSizeOfVariable (\r
+ IN VARIABLE_HEADER *Variable\r
+ )\r
+{\r
+ //\r
+ // Check whether the header is valid fully;\r
+ // Tricky: The unprogramed data in FLASH equals 0xff.\r
+ // \r
+ if (Variable->DataSize == (UINT32) -1 || \r
+ Variable->Attributes == (UINT32) -1 || \r
+ Variable->NameSize == (UINT32) -1) {\r
+ return 0;\r
+ }\r
+ return Variable->NameSize;\r
+}\r
+\r
+UINT32\r
+DataSizeOfVariable (\r
+ IN VARIABLE_HEADER *Variable\r
+ )\r
+{\r
+ //\r
+ // Check whether the header is valid fully;\r
+ // Tricky: The unprogramed data in FLASH equals 0xff.\r
+ // \r
+ if (Variable->DataSize == (UINT32) -1 || \r
+ Variable->Attributes == (UINT32) -1 || \r
+ Variable->NameSize == (UINT32) -1) {\r
+ return 0;\r
+ }\r
+ return Variable->DataSize;\r
+}\r
+\r
+UINT32\r
+AttributesOfVariable (\r
+ IN VARIABLE_HEADER *Variable\r
+ )\r
+{\r
+\r
+ //\r
+ // Check whether the header is valid fully;\r
+ // Tricky: The unprogramed data in FLASH equals 0xff.\r
+ // \r
+ if (Variable->DataSize == (UINT32) -1 || \r
+ Variable->Attributes == (UINT32) -1 || \r
+ Variable->NameSize == (UINT32) -1) {\r
+ return 0;\r
+ }\r
+ return Variable->Attributes;\r
+}\r
+\r
+\r