taskschd: Implement ITaskService_get_ConnectedUser.
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=48110
This commit is contained in:
parent
b9a2ff2558
commit
6ec977aa00
2 changed files with 35 additions and 2 deletions
|
@ -3687,6 +3687,7 @@ typedef struct
|
||||||
BOOL connected;
|
BOOL connected;
|
||||||
DWORD version;
|
DWORD version;
|
||||||
WCHAR comp_name[MAX_COMPUTERNAME_LENGTH + 1];
|
WCHAR comp_name[MAX_COMPUTERNAME_LENGTH + 1];
|
||||||
|
WCHAR user_name[256];
|
||||||
} TaskService;
|
} TaskService;
|
||||||
|
|
||||||
static inline TaskService *impl_from_ITaskService(ITaskService *iface)
|
static inline TaskService *impl_from_ITaskService(ITaskService *iface)
|
||||||
|
@ -3858,6 +3859,7 @@ static HRESULT WINAPI TaskService_Connect(ITaskService *iface, VARIANT server, V
|
||||||
static WCHAR ncalrpc[] = L"ncalrpc";
|
static WCHAR ncalrpc[] = L"ncalrpc";
|
||||||
TaskService *task_svc = impl_from_ITaskService(iface);
|
TaskService *task_svc = impl_from_ITaskService(iface);
|
||||||
WCHAR comp_name[MAX_COMPUTERNAME_LENGTH + 1];
|
WCHAR comp_name[MAX_COMPUTERNAME_LENGTH + 1];
|
||||||
|
WCHAR user_name[256];
|
||||||
DWORD len;
|
DWORD len;
|
||||||
HRESULT hr;
|
HRESULT hr;
|
||||||
RPC_WSTR binding_str;
|
RPC_WSTR binding_str;
|
||||||
|
@ -3873,6 +3875,10 @@ static HRESULT WINAPI TaskService_Connect(ITaskService *iface, VARIANT server, V
|
||||||
if (!GetComputerNameW(comp_name, &len))
|
if (!GetComputerNameW(comp_name, &len))
|
||||||
return HRESULT_FROM_WIN32(GetLastError());
|
return HRESULT_FROM_WIN32(GetLastError());
|
||||||
|
|
||||||
|
len = ARRAY_SIZE(user_name);
|
||||||
|
if (!GetUserNameW(user_name, &len))
|
||||||
|
return HRESULT_FROM_WIN32(GetLastError());
|
||||||
|
|
||||||
if (!is_variant_null(&server))
|
if (!is_variant_null(&server))
|
||||||
{
|
{
|
||||||
const WCHAR *server_name;
|
const WCHAR *server_name;
|
||||||
|
@ -3911,6 +3917,7 @@ static HRESULT WINAPI TaskService_Connect(ITaskService *iface, VARIANT server, V
|
||||||
TRACE("server version %#lx\n", task_svc->version);
|
TRACE("server version %#lx\n", task_svc->version);
|
||||||
|
|
||||||
lstrcpyW(task_svc->comp_name, comp_name);
|
lstrcpyW(task_svc->comp_name, comp_name);
|
||||||
|
lstrcpyW(task_svc->user_name, user_name);
|
||||||
task_svc->connected = TRUE;
|
task_svc->connected = TRUE;
|
||||||
|
|
||||||
return S_OK;
|
return S_OK;
|
||||||
|
@ -3948,8 +3955,19 @@ static HRESULT WINAPI TaskService_get_TargetServer(ITaskService *iface, BSTR *se
|
||||||
|
|
||||||
static HRESULT WINAPI TaskService_get_ConnectedUser(ITaskService *iface, BSTR *user)
|
static HRESULT WINAPI TaskService_get_ConnectedUser(ITaskService *iface, BSTR *user)
|
||||||
{
|
{
|
||||||
FIXME("%p,%p: stub\n", iface, user);
|
TaskService *task_svc = impl_from_ITaskService(iface);
|
||||||
return E_NOTIMPL;
|
|
||||||
|
TRACE("%p,%p\n", iface, user);
|
||||||
|
|
||||||
|
if (!user) return E_POINTER;
|
||||||
|
|
||||||
|
if (!task_svc->connected)
|
||||||
|
return HRESULT_FROM_WIN32(ERROR_ONLY_IF_CONNECTED);
|
||||||
|
|
||||||
|
*user = SysAllocString(task_svc->user_name);
|
||||||
|
if (!*user) return E_OUTOFMEMORY;
|
||||||
|
|
||||||
|
return S_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
static HRESULT WINAPI TaskService_get_ConnectedDomain(ITaskService *iface, BSTR *domain)
|
static HRESULT WINAPI TaskService_get_ConnectedDomain(ITaskService *iface, BSTR *domain)
|
||||||
|
|
|
@ -64,6 +64,7 @@ static BOOL check_win_version(int min_major, int min_minor)
|
||||||
static void test_Connect(void)
|
static void test_Connect(void)
|
||||||
{
|
{
|
||||||
WCHAR comp_name[MAX_COMPUTERNAME_LENGTH + 1];
|
WCHAR comp_name[MAX_COMPUTERNAME_LENGTH + 1];
|
||||||
|
WCHAR user_name[256];
|
||||||
DWORD len;
|
DWORD len;
|
||||||
HRESULT hr;
|
HRESULT hr;
|
||||||
BSTR bstr;
|
BSTR bstr;
|
||||||
|
@ -93,6 +94,12 @@ static void test_Connect(void)
|
||||||
hr = ITaskService_get_TargetServer(service, &bstr);
|
hr = ITaskService_get_TargetServer(service, &bstr);
|
||||||
ok(hr == HRESULT_FROM_WIN32(ERROR_ONLY_IF_CONNECTED), "expected ERROR_ONLY_IF_CONNECTED, got %#lx\n", hr);
|
ok(hr == HRESULT_FROM_WIN32(ERROR_ONLY_IF_CONNECTED), "expected ERROR_ONLY_IF_CONNECTED, got %#lx\n", hr);
|
||||||
|
|
||||||
|
hr = ITaskService_get_ConnectedUser(service, NULL);
|
||||||
|
ok(hr == E_POINTER, "expected E_POINTER, got %#lx\n", hr);
|
||||||
|
|
||||||
|
hr = ITaskService_get_ConnectedUser(service, &bstr);
|
||||||
|
ok(hr == HRESULT_FROM_WIN32(ERROR_ONLY_IF_CONNECTED), "expected ERROR_ONLY_IF_CONNECTED, got %#lx\n", hr);
|
||||||
|
|
||||||
/* Win7 doesn't support UNC \\ prefix, but according to a user
|
/* Win7 doesn't support UNC \\ prefix, but according to a user
|
||||||
* comment on MSDN Win8 supports both ways.
|
* comment on MSDN Win8 supports both ways.
|
||||||
*/
|
*/
|
||||||
|
@ -144,6 +151,14 @@ static void test_Connect(void)
|
||||||
ok(!lstrcmpW(comp_name, bstr), "compname %s != server name %s\n", wine_dbgstr_w(comp_name), wine_dbgstr_w(bstr));
|
ok(!lstrcmpW(comp_name, bstr), "compname %s != server name %s\n", wine_dbgstr_w(comp_name), wine_dbgstr_w(bstr));
|
||||||
SysFreeString(bstr);
|
SysFreeString(bstr);
|
||||||
|
|
||||||
|
len = ARRAY_SIZE(user_name);
|
||||||
|
GetUserNameW(user_name, &len);
|
||||||
|
|
||||||
|
hr = ITaskService_get_ConnectedUser(service, &bstr);
|
||||||
|
ok(hr == S_OK, "get_ConnectedUser error %#lx\n", hr);
|
||||||
|
ok(!lstrcmpW(user_name, bstr), "username %s != user name %s\n", wine_dbgstr_w(user_name), wine_dbgstr_w(bstr));
|
||||||
|
SysFreeString(bstr);
|
||||||
|
|
||||||
ITaskService_Release(service);
|
ITaskService_Release(service);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue