Source code of Windows XP (NT5)
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

76 lines
2.0 KiB

/*==========================================================================;
*
* Copyright (C) 1999 Microsoft Corporation. All Rights Reserved.
*
* File: guidutil.cpp
* Content: Some GUID related utility functions
*
* History:
* Date By Reason
* ============
* 08/19/99 pnewson created
***************************************************************************/
#include "dncmni.h"
#undef DPF_MODNAME
#define DPF_MODNAME "DVStringFromGUID"
HRESULT DVStringFromGUID(const GUID* lpguid, WCHAR* swzBuf, DWORD dwNumChars)
{
if (dwNumChars < GUID_STRING_LEN)
{
return E_FAIL;
}
swprintf(
swzBuf,
L"{%-08.8X-%-04.4X-%-04.4X-%02.2X%02.2X-%02.2X%02.2X%02.2X%02.2X%02.2X%02.2X}",
lpguid->Data1,
lpguid->Data2,
lpguid->Data3,
lpguid->Data4[0],
lpguid->Data4[1],
lpguid->Data4[2],
lpguid->Data4[3],
lpguid->Data4[4],
lpguid->Data4[5],
lpguid->Data4[6],
lpguid->Data4[7] );
return S_OK;
}
#undef DPF_MODNAME
#define DPF_MODNAME "DVGUIDFromString"
HRESULT DVGUIDFromString(const WCHAR* wszBuf, GUID* lpguid)
{
UINT aiTmp[10];
if( swscanf( wszBuf, L"{%8X-%4X-%4X-%2X%2X-%2X%2X%2X%2X%2X%2X}",
&lpguid->Data1,
&aiTmp[0], &aiTmp[1],
&aiTmp[2], &aiTmp[3],
&aiTmp[4], &aiTmp[5],
&aiTmp[6], &aiTmp[7],
&aiTmp[8], &aiTmp[9] ) != 11 )
{
ZeroMemory(lpguid, sizeof(GUID));
return E_FAIL;
}
else
{
lpguid->Data2 = (USHORT) aiTmp[0];
lpguid->Data3 = (USHORT) aiTmp[1];
lpguid->Data4[0] = (BYTE) aiTmp[2];
lpguid->Data4[1] = (BYTE) aiTmp[3];
lpguid->Data4[2] = (BYTE) aiTmp[4];
lpguid->Data4[3] = (BYTE) aiTmp[5];
lpguid->Data4[4] = (BYTE) aiTmp[6];
lpguid->Data4[5] = (BYTE) aiTmp[7];
lpguid->Data4[6] = (BYTE) aiTmp[8];
lpguid->Data4[7] = (BYTE) aiTmp[9];
return S_OK;
}
}