StringToGuid() changed not to require zero termination exactly at the end of the GUID string; plus it can now return the pointer to the end of the GUID found; akin of strtoi()

This commit is contained in:
Simon Rozman 2016-08-27 17:22:19 +02:00
parent 92f010b206
commit ea9a08e02a
2 changed files with 8 additions and 6 deletions

View File

@ -158,7 +158,7 @@ template<class _Elem, class _Traits, class _Ax> inline VOID GuidToStringW(_In_ L
/// \param[in ] lpszGuid String with GUID /// \param[in ] lpszGuid String with GUID
/// \param[out] lpGuid GUID to store the result to /// \param[out] lpGuid GUID to store the result to
/// ///
BOOL WINSTD_API StringToGuidA(_In_z_ LPCSTR lpszGuid, _Out_ LPGUID lpGuid); BOOL WINSTD_API StringToGuidA(_In_z_ LPCSTR lpszGuid, _Out_ LPGUID lpGuid, _Out_ LPCSTR *lpszGuidEnd = NULL);
/// ///
/// Parses string with GUID and stores it to GUID /// Parses string with GUID and stores it to GUID
@ -166,7 +166,7 @@ BOOL WINSTD_API StringToGuidA(_In_z_ LPCSTR lpszGuid, _Out_ LPGUID lpGuid);
/// \param[in ] lpszGuid String with GUID /// \param[in ] lpszGuid String with GUID
/// \param[out] lpGuid GUID to store the result to /// \param[out] lpGuid GUID to store the result to
/// ///
BOOL WINSTD_API StringToGuidW(_In_z_ LPCWSTR lpszGuid, _Out_ LPGUID lpGuid); BOOL WINSTD_API StringToGuidW(_In_z_ LPCWSTR lpszGuid, _Out_ LPGUID lpGuid, _Out_ LPCWSTR *lpszGuidEnd = NULL);
#ifdef _UNICODE #ifdef _UNICODE
#define StringToGuid StringToGuidW #define StringToGuid StringToGuidW

View File

@ -25,7 +25,7 @@
// StringToGuidA // StringToGuidA
////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////
BOOL WINSTD_API StringToGuidA(_In_z_ LPCSTR lpszGuid, _Out_ LPGUID lpGuid) BOOL WINSTD_API StringToGuidA(_In_z_ LPCSTR lpszGuid, _Out_ LPGUID lpGuid, _Out_ LPCSTR *lpszGuidEnd)
{ {
GUID g; GUID g;
LPSTR lpszEnd; LPSTR lpszEnd;
@ -80,14 +80,15 @@ BOOL WINSTD_API StringToGuidA(_In_z_ LPCSTR lpszGuid, _Out_ LPGUID lpGuid)
if (*lpszGuid != '}') return FALSE; if (*lpszGuid != '}') return FALSE;
lpszGuid++; lpszGuid++;
if (*lpszGuid != 0) return FALSE; if (lpszGuidEnd)
*lpszGuidEnd = lpszGuid;
*lpGuid = g; *lpGuid = g;
return TRUE; return TRUE;
} }
BOOL WINSTD_API StringToGuidW(_In_z_ LPCWSTR lpszGuid, _Out_ LPGUID lpGuid) BOOL WINSTD_API StringToGuidW(_In_z_ LPCWSTR lpszGuid, _Out_ LPGUID lpGuid, _Out_ LPCWSTR *lpszGuidEnd)
{ {
GUID g; GUID g;
LPWSTR lpszEnd; LPWSTR lpszEnd;
@ -142,7 +143,8 @@ BOOL WINSTD_API StringToGuidW(_In_z_ LPCWSTR lpszGuid, _Out_ LPGUID lpGuid)
if (*lpszGuid != '}') return FALSE; if (*lpszGuid != '}') return FALSE;
lpszGuid++; lpszGuid++;
if (*lpszGuid != 0) return FALSE; if (lpszGuidEnd)
*lpszGuidEnd = lpszGuid;
*lpGuid = g; *lpGuid = g;
return TRUE; return TRUE;