[PATCH 5/6] iphlpapi: Implement ConvertStringToGuidW().
Huw Davies
huw at codeweavers.com
Thu Jul 8 03:00:01 CDT 2021
Signed-off-by: Huw Davies <huw at codeweavers.com>
---
dlls/iphlpapi/iphlpapi.spec | 2 +-
dlls/iphlpapi/iphlpapi_main.c | 8 ++++++++
dlls/iphlpapi/tests/iphlpapi.c | 10 +++++++++-
3 files changed, 18 insertions(+), 2 deletions(-)
diff --git a/dlls/iphlpapi/iphlpapi.spec b/dlls/iphlpapi/iphlpapi.spec
index 480b26c9315..6c51548b6e3 100644
--- a/dlls/iphlpapi/iphlpapi.spec
+++ b/dlls/iphlpapi/iphlpapi.spec
@@ -32,7 +32,7 @@
#@ stub ConvertRemoteInterfaceLuidToGuid
#@ stub ConvertRemoteInterfaceLuidToIndex
#@ stub ConvertStringToGuidA
-#@ stub ConvertStringToGuidW
+@ stdcall ConvertStringToGuidW( ptr ptr )
#@ stub ConvertStringToInterfacePhysicalAddress
#@ stub CPNatfwtCreateProviderInstance
#@ stub CPNatfwtDeregisterProviderInstance
diff --git a/dlls/iphlpapi/iphlpapi_main.c b/dlls/iphlpapi/iphlpapi_main.c
index ffd0028ff42..079acbf2a9e 100644
--- a/dlls/iphlpapi/iphlpapi_main.c
+++ b/dlls/iphlpapi/iphlpapi_main.c
@@ -97,6 +97,14 @@ DWORD WINAPI ConvertGuidToStringW( const GUID *guid, WCHAR *str, DWORD len )
return ERROR_SUCCESS;
}
+DWORD WINAPI ConvertStringToGuidW( const WCHAR *str, GUID *guid )
+{
+ UNICODE_STRING ustr;
+
+ RtlInitUnicodeString( &ustr, str );
+ return RtlNtStatusToDosError( RtlGUIDFromString( &ustr, guid ) );
+}
+
/******************************************************************
* AddIPAddress (IPHLPAPI.@)
*
diff --git a/dlls/iphlpapi/tests/iphlpapi.c b/dlls/iphlpapi/tests/iphlpapi.c
index daf3fec0a98..39aa7123668 100644
--- a/dlls/iphlpapi/tests/iphlpapi.c
+++ b/dlls/iphlpapi/tests/iphlpapi.c
@@ -69,6 +69,7 @@ static DWORD (WINAPI *pCancelMibChangeNotify2)(HANDLE);
DWORD WINAPI ConvertGuidToStringA( const GUID *, char *, DWORD );
DWORD WINAPI ConvertGuidToStringW( const GUID *, WCHAR *, DWORD );
+DWORD WINAPI ConvertStringToGuidW( const WCHAR *, GUID * );
static void loadIPHlpApi(void)
{
@@ -2339,7 +2340,7 @@ static void test_ConvertGuidToString( void )
DWORD err;
char bufA[39];
WCHAR bufW[39];
- GUID guid = { 0xa, 0xb, 0xc, { 0xd, 0, 0xe, 0xf } };
+ GUID guid = { 0xa, 0xb, 0xc, { 0xd, 0, 0xe, 0xf } }, guid2;
err = ConvertGuidToStringA( &guid, bufA, 38 );
ok( err, "got %d\n", err );
@@ -2352,6 +2353,13 @@ static void test_ConvertGuidToString( void )
err = ConvertGuidToStringW( &guid, bufW, 39 );
ok( !err, "got %d\n", err );
ok( !wcscmp( bufW, L"{0000000A-000B-000C-0D00-0E0F00000000}" ), "got %s\n", debugstr_w( bufW ) );
+
+ err = ConvertStringToGuidW( bufW, &guid2 );
+ ok( !err, "got %d\n", err );
+ ok( IsEqualGUID( &guid, &guid2 ), "guid mismatch\n" );
+
+ err = ConvertStringToGuidW( L"foo", &guid2 );
+ ok( err == ERROR_INVALID_PARAMETER, "got %d\n", err );
}
START_TEST(iphlpapi)
--
2.23.0
More information about the wine-devel
mailing list