[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