[PATCH 1/5] mstask: Implement ITaskScheduler_GetTargetComputer
Detlef Riekenberg
wine.dev at web.de
Sun Nov 4 15:39:33 CST 2012
--
By by ... Detlef
---
dlls/mstask/task_scheduler.c | 37 +++++++++++++++++++++++++++++++++++--
1 files changed, 35 insertions(+), 2 deletions(-)
diff --git a/dlls/mstask/task_scheduler.c b/dlls/mstask/task_scheduler.c
index 1d2ac21..045adc8 100644
--- a/dlls/mstask/task_scheduler.c
+++ b/dlls/mstask/task_scheduler.c
@@ -28,6 +28,22 @@ typedef struct
LONG ref;
} TaskSchedulerImpl;
+static LPWSTR get_unc_computername(void)
+{
+ static WCHAR buffer[MAX_COMPUTERNAME_LENGTH + 3]; /* extra space for two '\' and a zero */
+ DWORD len = MAX_COMPUTERNAME_LENGTH + 1; /* extra space for the zero */
+
+ if (*buffer)
+ return buffer;
+
+ if (!GetComputerNameW(buffer + 2, &len))
+ return NULL;
+
+ buffer[1] = '\\';
+ buffer[0] = '\\';
+ return buffer;
+}
+
static inline TaskSchedulerImpl *impl_from_ITaskScheduler(ITaskScheduler *iface)
{
return CONTAINING_RECORD(iface, TaskSchedulerImpl, ITaskScheduler_iface);
@@ -93,8 +109,25 @@ static HRESULT WINAPI MSTASK_ITaskScheduler_GetTargetComputer(
ITaskScheduler* iface,
LPWSTR *ppwszComputer)
{
- FIXME("%p, %p: stub\n", iface, ppwszComputer);
- return E_NOTIMPL;
+ TaskSchedulerImpl *This = impl_from_ITaskScheduler(iface);
+ LPWSTR target = get_unc_computername();
+
+ TRACE("(%p)->(%p)\n", This, ppwszComputer);
+
+ if (!ppwszComputer)
+ return E_INVALIDARG;
+
+ if (target)
+ {
+ *ppwszComputer = CoTaskMemAlloc((lstrlenW(target) + 1) * sizeof(WCHAR));
+ if (*ppwszComputer)
+ {
+ lstrcpyW(*ppwszComputer, target);
+ return S_OK;
+ }
+ }
+ *ppwszComputer = NULL;
+ return HRESULT_FROM_WIN32(GetLastError());
}
static HRESULT WINAPI MSTASK_ITaskScheduler_Enum(
--
1.7.5.4
More information about the wine-patches
mailing list