VOID CIfrObj::_EMIT_PENDING_OBJ ( VOID ) { CHAR8 *ObjBinBuf = NULL; // // do nothing // if (!mDelayEmit || !gCreateOp) { return; } mPkgOffset = gCFormPkg.GetPkgLength (); // // update data buffer to package data // ObjBinBuf = gCFormPkg.IfrBinBufferGet (mObjBinLen); if (ObjBinBuf != NULL) { memmove (ObjBinBuf, mObjBinBuf, mObjBinLen); } // // update bin buffer to package data buffer // if (mObjBinBuf != NULL) { delete mObjBinBuf; mObjBinBuf = ObjBinBuf; } mDelayEmit = FALSE; }
VOID CIfrObj::_EMIT_PENDING_OBJ ( VOID ) { CHAR8 *ObjBinBuf = NULL; ObjBinBuf = gCFormPkg.IfrBinBufferGet (mObjBinLen); if (ObjBinBuf != NULL) { memcpy (ObjBinBuf, mObjBinBuf, mObjBinLen); } if (mObjBinBuf != NULL) { delete mObjBinBuf; } }
CIfrObj::CIfrObj ( IN UINT8 OpCode, OUT CHAR8 **IfrObj, IN UINT8 ObjBinLen, IN BOOLEAN DelayEmit ) { mDelayEmit = DelayEmit; mPkgOffset = gCFormPkg.GetPkgLength (); mObjBinLen = (ObjBinLen == 0) ? gOpcodeSizesScopeTable[OpCode].mSize : ObjBinLen; mObjBinBuf = ((DelayEmit == FALSE) && (gCreateOp == TRUE)) ? gCFormPkg.IfrBinBufferGet (mObjBinLen) : new CHAR8[EFI_IFR_MAX_LENGTH]; mRecordIdx = (gCreateOp == TRUE) ? gCIfrRecordInfoDB.IfrRecordRegister (0xFFFFFFFF, mObjBinBuf, mObjBinLen, mPkgOffset) : EFI_IFR_RECORDINFO_IDX_INVALUD; if (IfrObj != NULL) { *IfrObj = mObjBinBuf; } CIFROBJ_DEBUG_PRINT (OpCode); }