+/**\r
+ Retrieves a pointer to the beginning of a variable argument list based on \r
+ the name of the parameter that immediately precedes the variable argument list. \r
+\r
+ This function initializes Marker to point to the beginning of the variable argument \r
+ list that immediately follows Parameter. The method for computing the pointer to the \r
+ next argument in the argument list is CPU specific following the EFIAPI ABI.\r
+\r
+ @param Marker Pointer to the beginning of the variable argument list.\r
+ @param Parameter The name of the parameter that immediately precedes \r
+ the variable argument list.\r
+ \r
+ @return A pointer to the beginning of a variable argument list.\r
+\r
+**/\r
+#define VA_START(Marker, Parameter) (Marker = (VA_LIST) & (Parameter) + _INT_SIZE_OF (Parameter))\r
+\r
+/**\r
+ Returns an argument of a specified type from a variable argument list and updates \r
+ the pointer to the variable argument list to point to the next argument. \r
+\r
+ This function returns an argument of the type specified by TYPE from the beginning \r
+ of the variable argument list specified by Marker. Marker is then updated to point \r
+ to the next argument in the variable argument list. The method for computing the \r
+ pointer to the next argument in the argument list is CPU specific following the EFIAPI ABI.\r
+\r
+ @param Marker Pointer to the beginning of a variable argument list.\r
+ @param TYPE The type of argument to retrieve from the beginning \r
+ of the variable argument list.\r
+ \r
+ @return An argument of the type specified by TYPE.\r
+\r
+**/\r
+#define VA_ARG(Marker, TYPE) (*(TYPE *) ((Marker += _INT_SIZE_OF (TYPE)) - _INT_SIZE_OF (TYPE)))\r
+\r
+/**\r
+ Terminates the use of a variable argument list.\r
+\r
+ This function initializes Marker so it can no longer be used with VA_ARG(). \r
+ After this macro is used, the only way to access the variable argument list again is \r
+ by using VA_START() again.\r
+\r
+ @param Marker The variable to set to the beginning of the variable argument list.\r
+ \r
+**/\r
+#define VA_END(Marker) (Marker = (VA_LIST) 0)\r
+\r
+/**\r
+ Macro that returns the byte offset of a field in a data structure. \r
+\r
+ This function returns the offset, in bytes, of field specified by Field from the \r
+ beginning of the data structure specified by TYPE. If TYPE does not contain Field, \r
+ the module will not compile. \r
+\r
+ @param TYPE The name of the data structure that contains the field specified by Field. \r
+ @param Field The name of the field in the data structure.\r
+ \r
+ @return Offset, in bytes, of field.\r
+ \r
+**/\r