The WNetGetUniversalName function takes a drive-based path for a network resource and obtains a data structure that contains a more universal form of the name.
DWORD WNetGetUniversalName(
LPCTSTR lpLocalPath, |
// pointer to drive-based path for a network resource |
DWORD dwInfoLevel, |
// specifies form of universal name to be obtained |
LPVOID lpBuffer, |
// pointer to buffer that receives universal name data structure |
LPDWORD lpBufferSize |
// pointer to variable that specifies size of buffer |
); |
For example, if drive H has been mapped to a network drive share, and the
network resource of interest is a file named SAMPLE.DOC in the directory
\WIN32\EXAMPLES on that share, the drive-based path is
H:\WIN32\EXAMPLES\SAMPLE.DOC.
Value |
Meaning |
UNIVERSAL_NAME_INFO_LEVEL |
The function will store a UNIVERSAL_NAME_INFO data structure in the buffer. |
REMOTE_NAME_INFO_LEVEL |
The function will store a REMOTE_NAME_INFO data structure in the buffer. |
The UNIVERSAL_NAME_INFO data
structure points to a Universal Naming Convention (UNC) name string.
If the function succeeds, it sets the variable pointed to by lpBufferSize to the size in bytes of the data structure stored in the buffer. If the function fails because the buffer is too small, indicated by the ERROR_MORE_DATA error code, it sets the variable pointed to by lpBufferSize to the required buffer size.
If the function succeeds, the return value is NO_ERROR.
If the function fails, the return value is an error code. To get extended error information, call GetLastError. GetLastError may return one of the following error codes:
Value |
Meaning |
ERROR_BAD_DEVICE |
The string pointed to by lpLocalPath is invalid. |
ERROR_CONNECTION_UNAVAIL |
There is no current connection to the remote device, but there is a remembered (persistent) connection to it. |
ERROR_EXTENDED_ERROR |
A network-specific error occurred. Use the WNetGetLastError function to obtain a description of the error. |
ERROR_MORE_DATA |
The buffer pointed to by lpBuffer is too small. The function sets the variable pointed to by lpBufferSize to the required buffer size. More entries are available with subsequent calls. |
ERROR_NOT_SUPPORTED |
The dwInfoLevel parameter was set to UNIVERSAL_NAME_INFO_LEVEL, but the network provider does not support UNC names. This function is not supported by any of the network providers. |
ERROR_NO_NET_OR_BAD_PATH |
None of the providers recognized this local name as having a connection. However, the network is not available for at least one provider to whom the connection may belong. |
ERROR_NO_NETWORK |
There is no network present. |
ERROR_NOT_CONNECTED |
The device specified by lpLocalPath is not redirected. |
A universal form of a local drive-based path identifies a network resource in an unambiguous, computer-independent manner. The name can then be passed to processes on other computers, allowing those processes to obtain access to the resource.
The WNetGetUniversalName function currently supports one universal name form: universal naming convention (UNC) names, which look like the following:
\\servername\sharename\path\file
Using the example from the preceding description of the lpLocalPath parameter, if the shared network drive is on a server named COOLSERVER, and the share name is HOTSHARE, the UNC name for the network resource whose drive-based name is H:\WIN32\EXAMPLES\SAMPLE.DOC would be
\\coolserver\hotshare\win32\examples\sample.doc
The UNIVERSAL_NAME_INFO data structure contains a pointer to a UNC name string. The REMOTE_NAME_INFO data structure contains a pointer to a UNC name string. It also includes pointers to two other useful strings. A process can pass the REMOTE_NAME_INFO structure’s lpszConnectionInfo member into the WNetAddConnection2 function to connect a local device to the network resource, and then append the string pointed to by the lpszRemainingPath member to the local device string. The resulting string can be passed to Win32 functions that use a drive-based path.
REMOTE_NAME_INFO, UNIVERSAL_NAME_INFO, WNetAddConnection2, WNetGetLastError
Comments: