Hooks
static bool BeforeExtractGUID(const char* pszGUID, GUID& kGUID, UINT* puiStartIndex, bool& result);static void AfterExtractGUID(const char* pszGUID, GUID& kGUID, UINT* puiStartIndex, bool& result);static bool ReplaceExtractGUID(bool (*original)(const char*, GUID&, UINT*), const char* pszGUID, GUID& kGUID, UINT* puiStartIndex);CivRegisterBefore<CivHooks::ExtractGUID>(host, &BeforeExtractGUID);CivRegisterAfter<CivHooks::ExtractGUID>(host, &AfterExtractGUID);CivRegisterReplace<CivHooks::ExtractGUID>(host, &ReplaceExtractGUID);
Code
1498bool ExtractGUID(const char* pszGUID, GUID& kGUID, UINT* puiStartIndex /* = NULL */)1499{1500 if(pszGUID)1501 {1502 UINT uiIndex = (puiStartIndex != NULL)?(*puiStartIndex):0;15031504 if(GetGUIDSegment(pszGUID, &uiIndex, kGUID.Data1))1505 {1506 if(GetGUIDSegment(pszGUID, &uiIndex, kGUID.Data2))1507 {1508 if(GetGUIDSegment(pszGUID, &uiIndex, kGUID.Data3))1509 {1510 for(int iByte = 0; iByte < 8; ++iByte)1511 {1512 if(!GetGUIDSegment(pszGUID, &uiIndex, kGUID.Data4[iByte]))1513 {1514 return false;1515 }1516 }15171518 if(puiStartIndex)1519 *puiStartIndex = uiIndex;1520 return true;1521 }1522 }1523 }1524 }15251526 return false;1527}