/* File GuidMap.c Defines function to map a guid interface name to an unique descriptive name describing that interface and vice versa. Paul Mayfield, 8/25/97 Copyright 1997, Microsoft Corporation. */ #include "precomp.h" static HANDLE hConfig = NULL; // // Set the server that the name mapper will utilize // DWORD IfNameMapSetServer(HANDLE hMprConfig) { hConfig = hMprConfig; return NO_ERROR; } // // Map the guid name to the friendly name // DWORD IfName2DescriptionW(IN PWCHAR pszName, OUT PWCHAR pszBuffer, IN LPDWORD lpdwBufSize) { if (hConfig == NULL || lpdwBufSize == NULL) return ERROR_CAN_NOT_COMPLETE; return MprConfigGetFriendlyName (hConfig, pszName, pszBuffer, *lpdwBufSize); } // // Map the friendly name to the guid name // DWORD Description2IfNameW(IN PWCHAR pszName, OUT PWCHAR pszBuffer, IN LPDWORD lpdwBufSize) { if (hConfig == NULL || lpdwBufSize == NULL) return ERROR_CAN_NOT_COMPLETE; return MprConfigGetGuidName (hConfig, pszName, pszBuffer, *lpdwBufSize); } // ================================================================== // ANSI versions of the above functions // ================================================================== #define mbtowc(mb,wc) MultiByteToWideChar (CP_ACP, 0, (mb), strlen ((mb)) + 1, (wc), 1024) #define wctomb(wc,mb) WideCharToMultiByte (CP_ACP, 0, (wc), wcslen ((wc)) + 1, (mb), 1024, NULL, NULL) DWORD IfName2DescriptionA(LPSTR pszName, LPSTR pszBuffer, LPDWORD lpdwBufSize) { WCHAR pszNameW[1024]; WCHAR pszBufferW[1024]; DWORD dwErr; int ret; // Translate params to wide char ret = mbtowc(pszName, pszNameW); if (!ret) return GetLastError(); // Call wide char version of function and copy back to multi byte dwErr = IfName2DescriptionW (pszNameW, pszBufferW, lpdwBufSize); if (dwErr == NO_ERROR) { ret = wctomb(pszBufferW, pszBuffer); if (ret == 0) return GetLastError(); } return dwErr; } DWORD Description2IfNameA(LPSTR pszDesc, LPSTR pszBuffer, LPDWORD lpdwBufSize) { WCHAR pszNameW[1024]; WCHAR pszBufferW[1024]; DWORD dwErr; int ret; // Translate params to wide char ret = mbtowc(pszDesc, pszNameW); if (ret == 0) return GetLastError(); // Call wide char version of function and copy back to multi byte dwErr = Description2IfNameW(pszNameW, pszBufferW, lpdwBufSize); if (dwErr == NO_ERROR) { ret = wctomb(pszBufferW, pszBuffer); if (!ret) return GetLastError(); } return dwErr; }