-\r
-\r
-#define HII_LIB_OPCODE_ALLOCATION_SIZE 0x200\r
-\r
-/**\r
- Append raw opcodes to an OpCodeHandle.\r
-\r
- If OpCodeHandle is NULL, then ASSERT().\r
- If RawBuffer is NULL, then ASSERT();\r
-\r
- @param[in] OpCodeHandle Handle to the buffer of opcodes.\r
- @param[in] RawBuffer Buffer of opcodes to append.\r
- @param[in] RawBufferSize The size, in bytes, of Buffer.\r
-\r
- @retval NULL There is not enough space left in Buffer to add the opcode.\r
- @retval Other A pointer to the appended opcodes.\r
-\r
-**/\r
-UINT8 *\r
-EFIAPI\r
-HiiThunkCreateRawOpCodes (\r
- IN VOID *OpCodeHandle,\r
- IN UINT8 *RawBuffer,\r
- IN UINTN RawBufferSize\r
- )\r
-{\r
- UINT8 *Buffer;\r
- HII_LIB_OPCODE_BUFFER *OpCodeBuffer;\r
-\r
- ASSERT (RawBuffer != NULL);\r
- ASSERT (OpCodeHandle != NULL);\r
-\r
- OpCodeBuffer = (HII_LIB_OPCODE_BUFFER *)OpCodeHandle;\r
- if (OpCodeBuffer->Position + RawBufferSize > OpCodeBuffer->BufferSize) {\r
- Buffer = ReallocatePool (\r
- OpCodeBuffer->BufferSize, \r
- OpCodeBuffer->BufferSize + (RawBufferSize + HII_LIB_OPCODE_ALLOCATION_SIZE),\r
- OpCodeBuffer->Buffer\r
- );\r
- if (Buffer == NULL) {\r
- return NULL;\r
- }\r
- OpCodeBuffer->Buffer = Buffer;\r
- OpCodeBuffer->BufferSize += (RawBufferSize + HII_LIB_OPCODE_ALLOCATION_SIZE);\r
- }\r
- Buffer = OpCodeBuffer->Buffer + OpCodeBuffer->Position;\r
- OpCodeBuffer->Position += RawBufferSize;\r
- \r
- return (UINT8 *)CopyMem (Buffer, RawBuffer, RawBufferSize);\r
-}\r
-\r