Question:
For file-based applications, how is the Universal Naming Convention obtained for path names?
Answer:
To get the UNC name of a drive-based path, use the Windows API callWNetGetUniversalName. This function takes a drive-based path (i.e.,fully qualified file name) and returns its UNC equivalent.
Be forewarned,though: This call is not supported by Windows 95. Here’s something thatshould work if you’re in NT:
function GetUNCName(PathStr : String) : String;var bufSize : DWord; buf : TUniversalNameInfo; msg : String;begin bufSize := SizeOf(TUniversalNameInfo); if (WNetGetUniversalName(PChar(PathStr), UNIVERSAL_NAME_INFO_LEVEL, buf, bufSize) > 0) then case GetLastError of ERROR_BAD_DEVICE : msg := ‘ERROR_BAD_DEVICE’; ERROR_CONNECTION_UNAVAIL: msg := ‘ERROR_CONNECTION_UNAVAIL’; ERROR_EXTENDED_ERROR : msg := ‘ERROR_EXTENDED_ERROR’; ERROR_MORE_DATA : msg := ‘ERROR_MORE_DATA’; ERROR_NOT_SUPPORTED : msg := ‘ERROR_NOT_SUPPORTED’; ERROR_NO_NET_OR_BAD_PATH: msg := ‘ERROR_NO_NET_OR_BAD_PATH’; ERROR_NO_NETWORK : msg := ‘ERROR_NO_NETWORK’; ERROR_NOT_CONNECTED : msg := ‘ERROR_NOT_CONNECTED’; end else msg := buf.lpUniversalName; Result := msg; end;
Play around with this and see what you come up with.