//+------------------------------------------------------------------------- // // Function: wUUIDFromString (internal) // // Synopsis: Parse UUID such as 00000000-0000-0000-0000-000000000000 // // Arguments: [lpsz] - Supplies the UUID string to convert // [pguid] - Returns the GUID. // // Returns: TRUE if successful // //-------------------------------------------------------------------------- static BOOL wUUIDFromString(LPCWSTR lpsz, GUID * pguid) { DWORD dw; if (!HexStringToDword(lpsz, pguid->Data1, sizeof(DWORD)*2, '-')) return FALSE; if (!HexStringToDword(lpsz, dw, sizeof(WORD)*2, '-')) return FALSE; pguid->Data2 = (WORD)dw; if (!HexStringToDword(lpsz, dw, sizeof(WORD)*2, '-')) return FALSE; pguid->Data3 = (WORD)dw; if (!HexStringToDword(lpsz, dw, sizeof(BYTE)*2, 0)) return FALSE; pguid->Data4[0] = (BYTE)dw; if (!HexStringToDword(lpsz, dw, sizeof(BYTE)*2, '-')) return FALSE; pguid->Data4[1] = (BYTE)dw; if (!HexStringToDword(lpsz, dw, sizeof(BYTE)*2, 0)) return FALSE; pguid->Data4[2] = (BYTE)dw; if (!HexStringToDword(lpsz, dw, sizeof(BYTE)*2, 0)) return FALSE; pguid->Data4[3] = (BYTE)dw; if (!HexStringToDword(lpsz, dw, sizeof(BYTE)*2, 0)) return FALSE; pguid->Data4[4] = (BYTE)dw; if (!HexStringToDword(lpsz, dw, sizeof(BYTE)*2, 0)) return FALSE; pguid->Data4[5] = (BYTE)dw; if (!HexStringToDword(lpsz, dw, sizeof(BYTE)*2, 0)) return FALSE; pguid->Data4[6] = (BYTE)dw; if (!HexStringToDword(lpsz, dw, sizeof(BYTE)*2, 0)) return FALSE; pguid->Data4[7] = (BYTE)dw; return TRUE; }
// parse above format; return TRUE if succesful; always writes over *pguid. STDAPI_(BOOL) GUIDFromString(LPCTSTR lpsz, LPGUID pguid) { DWORD dw; if (*lpsz++ != TEXT('{') /*}*/ ) return FALSE; if (!HexStringToDword(&lpsz, &pguid->Data1, SIZEOF(DWORD)*2, TEXT('-'))) return FALSE; if (!HexStringToDword(&lpsz, &dw, SIZEOF(WORD)*2, TEXT('-'))) return FALSE; pguid->Data2 = (WORD)dw; if (!HexStringToDword(&lpsz, &dw, SIZEOF(WORD)*2, TEXT('-'))) return FALSE; pguid->Data3 = (WORD)dw; if (!HexStringToDword(&lpsz, &dw, SIZEOF(BYTE)*2, 0)) return FALSE; pguid->Data4[0] = (BYTE)dw; if (!HexStringToDword(&lpsz, &dw, SIZEOF(BYTE)*2, TEXT('-'))) return FALSE; pguid->Data4[1] = (BYTE)dw; if (!HexStringToDword(&lpsz, &dw, SIZEOF(BYTE)*2, 0)) return FALSE; pguid->Data4[2] = (BYTE)dw; if (!HexStringToDword(&lpsz, &dw, SIZEOF(BYTE)*2, 0)) return FALSE; pguid->Data4[3] = (BYTE)dw; if (!HexStringToDword(&lpsz, &dw, SIZEOF(BYTE)*2, 0)) return FALSE; pguid->Data4[4] = (BYTE)dw; if (!HexStringToDword(&lpsz, &dw, SIZEOF(BYTE)*2, 0)) return FALSE; pguid->Data4[5] = (BYTE)dw; if (!HexStringToDword(&lpsz, &dw, SIZEOF(BYTE)*2, 0)) return FALSE; pguid->Data4[6] = (BYTE)dw; if (!HexStringToDword(&lpsz, &dw, SIZEOF(BYTE)*2, /*(*/ TEXT('}'))) return FALSE; pguid->Data4[7] = (BYTE)dw; return TRUE; }