WNetGetConnection(): use QueryDosDevice to return a fake remote name
instead of the drive label.
This commit is contained in:
parent
57f7a2c181
commit
b37eab4ec8
|
@ -1547,6 +1547,8 @@ DWORD WINAPI WNetGetConnectionA( LPCSTR lpLocalName,
|
|||
WCHAR wideRemoteStatic[MAX_PATH];
|
||||
DWORD wideRemoteSize = sizeof(wideRemoteStatic) / sizeof(WCHAR);
|
||||
|
||||
MultiByteToWideChar(CP_ACP, 0, lpLocalName, -1, wideLocalName, len);
|
||||
|
||||
/* try once without memory allocation */
|
||||
ret = WNetGetConnectionW(wideLocalName, wideRemoteStatic,
|
||||
&wideRemoteSize);
|
||||
|
@ -1632,28 +1634,27 @@ DWORD WINAPI WNetGetConnectionW( LPCWSTR lpLocalName,
|
|||
ret = WN_BAD_LOCALNAME;
|
||||
else
|
||||
{
|
||||
WCHAR label[40];
|
||||
|
||||
if (lpLocalName[1] == ':')
|
||||
{
|
||||
switch(GetDriveTypeW(lpLocalName))
|
||||
{
|
||||
case DRIVE_REMOTE:
|
||||
if (!GetVolumeInformationW( lpLocalName, label, sizeof(label),
|
||||
NULL, NULL, NULL, NULL, 0 ))
|
||||
label[0] = 0;
|
||||
if (strlenW(label) + 1 > *lpBufferSize)
|
||||
{
|
||||
WCHAR remote[MAX_PATH];
|
||||
if (!QueryDosDeviceW( lpLocalName, remote, MAX_PATH )) remote[0] = 0;
|
||||
if (strlenW(remote) + 1 > *lpBufferSize)
|
||||
{
|
||||
*lpBufferSize = strlenW(label) + 1;
|
||||
*lpBufferSize = strlenW(remote) + 1;
|
||||
ret = WN_MORE_DATA;
|
||||
}
|
||||
else
|
||||
{
|
||||
strcpyW( lpRemoteName, label );
|
||||
strcpyW( lpRemoteName, remote );
|
||||
*lpBufferSize = strlenW(lpRemoteName) + 1;
|
||||
ret = WN_SUCCESS;
|
||||
}
|
||||
break;
|
||||
}
|
||||
case DRIVE_REMOVABLE:
|
||||
case DRIVE_FIXED:
|
||||
case DRIVE_CDROM:
|
||||
|
|
Loading…
Reference in New Issue