Dmitry Timoshkov : adsldp: Implement IADsADSystemInfo::get_ComputerName().
Module: wine Branch: master Commit: bc283fcf3d30c709cf064f71461e1b3577c26286 URL: https://source.winehq.org/git/wine.git/?a=commit;h=bc283fcf3d30c709cf064f714... Author: Dmitry Timoshkov <dmitry(a)baikal.ru> Date: Wed Feb 28 11:44:49 2018 +0800 adsldp: Implement IADsADSystemInfo::get_ComputerName(). Signed-off-by: Dmitry Timoshkov <dmitry(a)baikal.ru> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- dlls/adsldp/Makefile.in | 1 + dlls/adsldp/adsldp.c | 25 +++++++++++++++++++++++-- dlls/adsldp/tests/sysinfo.c | 1 - 3 files changed, 24 insertions(+), 3 deletions(-) diff --git a/dlls/adsldp/Makefile.in b/dlls/adsldp/Makefile.in index e033d91..c96e264 100644 --- a/dlls/adsldp/Makefile.in +++ b/dlls/adsldp/Makefile.in @@ -1,4 +1,5 @@ MODULE = adsldp.dll +IMPORTS = oleaut32 secur32 C_SRCS = \ adsldp.c diff --git a/dlls/adsldp/adsldp.c b/dlls/adsldp/adsldp.c index 15f1d23..4fc0de4 100644 --- a/dlls/adsldp/adsldp.c +++ b/dlls/adsldp/adsldp.c @@ -28,6 +28,8 @@ #include "objbase.h" #include "rpcproxy.h" #include "iads.h" +#define SECURITY_WIN32 +#include "security.h" #include "wine/debug.h" @@ -120,8 +122,27 @@ static HRESULT WINAPI sysinfo_get_UserName(IADsADSystemInfo *iface, BSTR *retval static HRESULT WINAPI sysinfo_get_ComputerName(IADsADSystemInfo *iface, BSTR *retval) { - FIXME("%p,%p: stub\n", iface, retval); - return E_NOTIMPL; + UINT size; + WCHAR *name; + + TRACE("%p,%p\n", iface, retval); + + size = 0; + GetComputerObjectNameW(NameFullyQualifiedDN, NULL, &size); + if (GetLastError() != ERROR_INSUFFICIENT_BUFFER) + return HRESULT_FROM_WIN32(GetLastError()); + + name = SysAllocStringLen(NULL, size); + if (!name) return E_OUTOFMEMORY; + + if (!GetComputerObjectNameW(NameFullyQualifiedDN, name, &size)) + { + SysFreeString(name); + return HRESULT_FROM_WIN32(GetLastError()); + } + + *retval = name; + return S_OK; } static HRESULT WINAPI sysinfo_get_SiteName(IADsADSystemInfo *iface, BSTR *retval) diff --git a/dlls/adsldp/tests/sysinfo.c b/dlls/adsldp/tests/sysinfo.c index 73435a6..1e3939f 100644 --- a/dlls/adsldp/tests/sysinfo.c +++ b/dlls/adsldp/tests/sysinfo.c @@ -79,7 +79,6 @@ static void test_ComputerName(void) ok(hr == S_OK, "got %#x\n", hr); hr = IADsADSystemInfo_get_ComputerName(sysinfo, &bstr); -todo_wine ok(hr == S_OK || hr == HRESULT_FROM_WIN32(ERROR_CANT_ACCESS_DOMAIN_INFO), "got %#x\n", hr); if (hr == S_OK) {
participants (1)
-
Alexandre Julliard