+**/\r
+UINT8 *\r
+EFIAPI\r
+HiiCreateOrderedListOpCode (\r
+ IN VOID *OpCodeHandle,\r
+ IN EFI_QUESTION_ID QuestionId,\r
+ IN EFI_VARSTORE_ID VarStoreId,\r
+ IN UINT16 VarOffset,\r
+ IN EFI_STRING_ID Prompt,\r
+ IN EFI_STRING_ID Help,\r
+ IN UINT8 QuestionFlags,\r
+ IN UINT8 OrderedListFlags,\r
+ IN UINT8 DataType,\r
+ IN UINT8 MaxContainers,\r
+ IN VOID *OptionsOpCodeHandle,\r
+ IN VOID *DefaultsOpCodeHandle OPTIONAL\r
+ );\r
+\r
+/**\r
+ This function updates a form that has previously been registered with the HII \r
+ Database. This function will perform at most one update operation.\r
+ \r
+ The form to update is specified by Handle, FormSetGuid, and FormId. Binary \r
+ comparisons of IFR opcodes are performed from the beginning of the form being \r
+ updated until an IFR opcode is found that exactly matches the first IFR opcode \r
+ specifed by StartOpCodeHandle. The following rules are used to determine if\r
+ an insert, replace, or delete operation is performed:\r
+ \r
+ 1) If no matches are found, then NULL is returned. \r
+ 2) If a match is found, and EndOpCodeHandle is NULL, then all of the IFR opcodes\r
+ from StartOpcodeHandle except the first opcode are inserted immediately after \r
+ the matching IFR opcode in the form beng updated.\r
+ 3) If a match is found, and EndOpCodeHandle is not NULL, then a search is made \r
+ from the matching IFR opcode until an IFR opcode exactly matches the first \r
+ IFR opcode specified by EndOpCodeHandle. If no match is found for the first\r
+ IFR opcode specified by EndOpCodeHandle, then NULL is returned. If a match\r
+ is found, then all of the IFR opcodes between the start match and the end \r
+ match are deleted from the form being updated and all of the IFR opcodes\r
+ from StartOpcodeHandle except the first opcode are inserted immediately after \r
+ the matching start IFR opcode. If StartOpCcodeHandle only contains one\r
+ IFR instruction, then the result of ths operation will delete all of the IFR\r
+ opcodes between the start end matches.\r
+\r
+ If HiiHandle is NULL, then ASSERT().\r
+ If StartOpCodeHandle is NULL, then ASSERT().\r
+\r
+ @param[in] HiiHandle The HII Handle of the form to update.\r
+ @param[in] FormSetGuid The Formset GUID of the form to update. This\r
+ is an optional parameter that may be NULL.\r
+ If it is NULL, all FormSet will be updated.\r
+ @param[in] FormId The ID of the form to update.\r
+ @param[in] StartOpCodeHandle An OpCode Handle that contains the set of IFR \r
+ opcodes to be inserted or replaced in the form.\r
+ The first IFR instruction in StartOpCodeHandle \r
+ is used to find matching IFR opcode in the \r
+ form. \r
+ @param[in] EndOpCodeHandle An OpCcode Handle that contains the IFR opcode\r
+ that marks the end of a replace operation in\r
+ the form. This is an optional parameter that\r
+ may be NULL. If it is NULL, then the IFR\r
+ opcodes specified by StartOpCodeHandle are \r
+ inserted into the form.\r
+ \r
+ @retval EFI_OUT_OF_RESOURCES Not enough memory resources are allocated.\r
+ @retval EFI_NOT_FOUND The following cases will return EFI_NOT_FOUND:\r
+ 1) The form specified by HiiHandle, FormSetGuid, \r
+ and FormId could not be found in the HII Database.\r
+ 2) No IFR opcodes in the target form match the first\r
+ IFR opcode in StartOpCodeHandle.\r
+ 3) EndOpCOde is not NULL, and no IFR opcodes in the \r
+ target form following a matching start opcode match \r
+ the first IFR opcode in EndOpCodeHandle.\r
+ @retval EFI_SUCCESS The matched form is updated by StartOpcode.\r