Visual Studio 2015 の C++ プロジェクトで、ネットワークドライブの共有ディレクトリーにあるファイルを共有しようと言うことで、ドライブ名をアドレスの判る状態にする必要がありました
端折ってますけど、忘れないように書いてこう!
こんな感じで、Windows10 のネットワークドライブ名を UNC へ変換することが出来ました
WNetGetUniversalName で、MSDN あたりを検索したり、Google 先生に聞いてみたりしてください
#pragma comment(lib, "mpr.lib")
…
#include <Winnetwk.h>
…
DWORD dwRetVal;
WCHAR buffer[1024];
DWORD bufSize = 1024;
…
UNIVERSAL_NAME_INFO* unameinfo = (UNIVERSAL_NAME_INFO *)&buffer;
dwRetVal = WNetGetUniversalName(_T("Z:\00-README.html"),UNIVERSAL_NAME_INFO_LEVEL, (LPVOID)unameinfo, &bufSize);
…
String^ unc = gcnew String(unameinfo->lpUniversalName);
…
MessageBox::Show(unc, "test", MessageBoxButtons::OK, MessageBoxIcon::Information);
…
プロジェクトは、WIN32 プロジェクトです
Z: は、File-Server と言う Samba の共有フォルダーをネットワークドライブに割り当てました
Z:¥00-README.html と言うファイル名を \\file-server\00-README.html へ変換することが出来ます
デバッガで調べたら、こんな感じ 0x0116e12c L"\\\\file-server\\Public\\00-README.html"
(この逆は出来ないのかな…?)
UNC のファイルを渡したり、普通のファイル名を WNetGetUniversalName へ渡すとエラーします
(dwRetVal に 1200 とか、2250 とかが返ってきますが、眺めた程度では判らないので後回し ^^;)