Bugzilla – Attachment 1124 Details for
Bug 3766
Реализовать WNetGetUniversalName A/W
EN
|
RU
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
Частичная реализация WNetGetUniversalNameA
0001-wnet-implement-WNetGetUniversalNameA-via-WNetGetCon.patch (text/plain), 3.32 KB, created by
Vitaly Lipatov
on 2010-11-18 03:58:26 MSK
(
hide
)
Description:
Частичная реализация WNetGetUniversalNameA
Filename:
MIME Type:
Creator:
Vitaly Lipatov
Created:
2010-11-18 03:58:26 MSK
Size:
3.32 KB
patch
obsolete
>From ab779862b522dab7331f8f29cbd97143129e2329 Mon Sep 17 00:00:00 2001 >From: Vitaly Lipatov <lav@etersoft.ru> >Date: Wed, 1 Apr 2009 21:18:30 +0400 >Subject: [PATCH] wnet: implement WNetGetUniversalNameA via WNetGetConnectionA > >--- > dlls/mpr/wnet.c | 61 +++++++++++++++++++++++++++++++++++++++++++++++------- > 1 files changed, 53 insertions(+), 8 deletions(-) > >diff --git a/dlls/mpr/wnet.c b/dlls/mpr/wnet.c >index 241ea2f..2185e10 100644 >--- a/dlls/mpr/wnet.c >+++ b/dlls/mpr/wnet.c >@@ -1772,7 +1772,7 @@ static DWORD get_drive_connection( WCHAR letter, LPWSTR remote, LPDWORD size ) > { > char *p, *mount_point = buffer + data->mount_point_offset; > DWORD len; >- >+ TRACE("mount_point: %s\n", mount_point); > if (data->mount_point_offset && !strncmp( mount_point, "unc/", 4 )) > { > mount_point += 2; >@@ -1879,29 +1879,74 @@ DWORD WINAPI WNetGetUniversalNameA ( LPCSTR lpLocalPath, DWORD dwInfoLevel, > > FIXME( "(%s, 0x%08X, %p, %p): stub\n", > debugstr_a(lpLocalPath), dwInfoLevel, lpBuffer, lpBufferSize); >- >+ if (!lpLocalPath) >+ err = WN_BAD_POINTER; >+ else if (!lpBufferSize) >+ err = WN_BAD_POINTER; >+ else if (!lpBuffer && *lpBufferSize) >+ err = WN_BAD_POINTER; >+ else > switch (dwInfoLevel) > { > case UNIVERSAL_NAME_INFO_LEVEL: > { > LPUNIVERSAL_NAME_INFOA info = lpBuffer; >+ DWORD str_size = *lpBufferSize - sizeof(*info); >+ if (*lpBufferSize <= sizeof(*info)) >+ { >+ err = WN_MORE_DATA; >+ break; >+ } >+ err = WNetGetConnectionA( lpLocalPath, (char*)info + sizeof(*info), &str_size); >+ if (err == WN_MORE_DATA) >+ { >+ *lpBufferSize = sizeof(*info) + str_size; >+ break; >+ } >+ if (err != WN_NO_ERROR) >+ break; >+ *lpBufferSize = sizeof(*info) + str_size; >+ info->lpUniversalName = (char *)info + sizeof(*info); >+ err = WN_NO_ERROR; >+ break; >+ } >+ case REMOTE_NAME_INFO_LEVEL: >+ { >+ LPREMOTE_NAME_INFOA info = lpBuffer; >+ CHAR uname[MAX_PATH]; >+ DWORD un_size = sizeof (uname); >+ DWORD cn_size, rp_size; >+ err = WNetGetConnectionA( lpLocalPath, uname, &un_size); >+ if (err == WN_MORE_DATA) >+ { /* FIXME: use dynamic buffer */ >+ err = WN_OUT_OF_MEMORY; >+ break; >+ } >+ if (err != WN_NO_ERROR) >+ break; >+ >+ cn_size=rp_size=un_size; >+ size = sizeof(*info) + un_size + cn_size + rp_size; > >- size = sizeof(*info) + lstrlenA(lpLocalPath) + 1; > if (*lpBufferSize < size) > { > err = WN_MORE_DATA; > break; > } >+ > info->lpUniversalName = (char *)info + sizeof(*info); >- lstrcpyA(info->lpUniversalName, lpLocalPath); >+ lstrcpyA(info->lpUniversalName, uname); >+ >+ info->lpConnectionName = (char*)info->lpUniversalName + un_size; >+ lstrcpyA(info->lpConnectionName, uname); >+ >+ info->lpRemainingPath = (char*)info->lpConnectionName + cn_size; >+ lstrcpyA(info->lpRemainingPath, uname); >+ > *lpBufferSize = size; > err = WN_NO_ERROR; > break; > } >- case REMOTE_NAME_INFO_LEVEL: >- err = WN_NO_NETWORK; >- break; >- > default: > err = WN_BAD_VALUE; > break; >-- >1.6.1.3.GIT >
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Raw
Actions:
View
Attachments on
bug 3766
: 1124