mirror of
https://github.com/reactos/reactos.git
synced 2025-01-04 21:38:43 +00:00
[MSTASK] Sync with Wine Staging 1.7.47. CORE-9924
svn path=/trunk/; revision=68463
This commit is contained in:
parent
e70d9ba6d5
commit
c4ea999155
2 changed files with 118 additions and 4 deletions
|
@ -26,11 +26,22 @@ typedef struct
|
|||
LONG ref;
|
||||
} TaskSchedulerImpl;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
IEnumWorkItems IEnumWorkItems_iface;
|
||||
LONG ref;
|
||||
} EnumWorkItemsImpl;
|
||||
|
||||
static inline TaskSchedulerImpl *impl_from_ITaskScheduler(ITaskScheduler *iface)
|
||||
{
|
||||
return CONTAINING_RECORD(iface, TaskSchedulerImpl, ITaskScheduler_iface);
|
||||
}
|
||||
|
||||
static inline EnumWorkItemsImpl *impl_from_IEnumWorkItems(IEnumWorkItems *iface)
|
||||
{
|
||||
return CONTAINING_RECORD(iface, EnumWorkItemsImpl, IEnumWorkItems_iface);
|
||||
}
|
||||
|
||||
static void TaskSchedulerDestructor(TaskSchedulerImpl *This)
|
||||
{
|
||||
TRACE("%p\n", This);
|
||||
|
@ -38,6 +49,103 @@ static void TaskSchedulerDestructor(TaskSchedulerImpl *This)
|
|||
InterlockedDecrement(&dll_ref);
|
||||
}
|
||||
|
||||
static HRESULT WINAPI EnumWorkItems_QueryInterface(IEnumWorkItems *iface, REFIID riid, void **obj)
|
||||
{
|
||||
EnumWorkItemsImpl *This = impl_from_IEnumWorkItems(iface);
|
||||
|
||||
TRACE("(%p)->(%s %p)\n", This, debugstr_guid(riid), obj);
|
||||
|
||||
if (IsEqualGUID(riid, &IID_IEnumWorkItems) || IsEqualGUID(riid, &IID_IUnknown))
|
||||
{
|
||||
*obj = &This->IEnumWorkItems_iface;
|
||||
IEnumWorkItems_AddRef(iface);
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
*obj = NULL;
|
||||
return E_NOINTERFACE;
|
||||
}
|
||||
|
||||
static ULONG WINAPI EnumWorkItems_AddRef(IEnumWorkItems *iface)
|
||||
{
|
||||
EnumWorkItemsImpl *This = impl_from_IEnumWorkItems(iface);
|
||||
ULONG ref = InterlockedIncrement(&This->ref);
|
||||
TRACE("(%p)->(%u)\n", This, ref);
|
||||
return ref;
|
||||
}
|
||||
|
||||
static ULONG WINAPI EnumWorkItems_Release(IEnumWorkItems *iface)
|
||||
{
|
||||
EnumWorkItemsImpl *This = impl_from_IEnumWorkItems(iface);
|
||||
ULONG ref = InterlockedDecrement(&This->ref);
|
||||
|
||||
TRACE("(%p)->(%u)\n", This, ref);
|
||||
|
||||
if (ref == 0)
|
||||
{
|
||||
HeapFree(GetProcessHeap(), 0, This);
|
||||
InterlockedDecrement(&dll_ref);
|
||||
}
|
||||
|
||||
return ref;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI EnumWorkItems_Next(IEnumWorkItems *iface, ULONG count, LPWSTR **names, ULONG *fetched)
|
||||
{
|
||||
EnumWorkItemsImpl *This = impl_from_IEnumWorkItems(iface);
|
||||
FIXME("(%p)->(%u %p %p): stub\n", This, count, names, fetched);
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI EnumWorkItems_Skip(IEnumWorkItems *iface, ULONG count)
|
||||
{
|
||||
EnumWorkItemsImpl *This = impl_from_IEnumWorkItems(iface);
|
||||
FIXME("(%p)->(%u): stub\n", This, count);
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI EnumWorkItems_Reset(IEnumWorkItems *iface)
|
||||
{
|
||||
EnumWorkItemsImpl *This = impl_from_IEnumWorkItems(iface);
|
||||
FIXME("(%p): stub\n", This);
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI EnumWorkItems_Clone(IEnumWorkItems *iface, IEnumWorkItems **cloned)
|
||||
{
|
||||
EnumWorkItemsImpl *This = impl_from_IEnumWorkItems(iface);
|
||||
FIXME("(%p)->(%p): stub\n", This, cloned);
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
static const IEnumWorkItemsVtbl EnumWorkItemsVtbl = {
|
||||
EnumWorkItems_QueryInterface,
|
||||
EnumWorkItems_AddRef,
|
||||
EnumWorkItems_Release,
|
||||
EnumWorkItems_Next,
|
||||
EnumWorkItems_Skip,
|
||||
EnumWorkItems_Reset,
|
||||
EnumWorkItems_Clone
|
||||
};
|
||||
|
||||
static HRESULT create_task_enum(IEnumWorkItems **ret)
|
||||
{
|
||||
EnumWorkItemsImpl *tasks;
|
||||
|
||||
*ret = NULL;
|
||||
|
||||
tasks = HeapAlloc(GetProcessHeap(), 0, sizeof(*tasks));
|
||||
if (!tasks)
|
||||
return E_OUTOFMEMORY;
|
||||
|
||||
tasks->IEnumWorkItems_iface.lpVtbl = &EnumWorkItemsVtbl;
|
||||
tasks->ref = 1;
|
||||
|
||||
*ret = &tasks->IEnumWorkItems_iface;
|
||||
InterlockedIncrement(&dll_ref);
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI MSTASK_ITaskScheduler_QueryInterface(
|
||||
ITaskScheduler* iface,
|
||||
REFIID riid,
|
||||
|
@ -138,10 +246,16 @@ static HRESULT WINAPI MSTASK_ITaskScheduler_GetTargetComputer(
|
|||
|
||||
static HRESULT WINAPI MSTASK_ITaskScheduler_Enum(
|
||||
ITaskScheduler* iface,
|
||||
IEnumWorkItems **ppEnumTasks)
|
||||
IEnumWorkItems **tasks)
|
||||
{
|
||||
FIXME("%p, %p: stub\n", iface, ppEnumTasks);
|
||||
return E_NOTIMPL;
|
||||
TaskSchedulerImpl *This = impl_from_ITaskScheduler(iface);
|
||||
|
||||
TRACE("(%p)->(%p)\n", This, tasks);
|
||||
|
||||
if (!tasks)
|
||||
return E_INVALIDARG;
|
||||
|
||||
return create_task_enum(tasks);
|
||||
}
|
||||
|
||||
static HRESULT WINAPI MSTASK_ITaskScheduler_Activate(
|
||||
|
|
|
@ -127,7 +127,7 @@ reactos/dll/win32/mspatcha # Synced to WineStaging-1.7.37
|
|||
reactos/dll/win32/msrle32 # Synced to WineStaging-1.7.37
|
||||
reactos/dll/win32/mssign32 # Synced to WineStaging-1.7.37
|
||||
reactos/dll/win32/mssip32 # Synced to WineStaging-1.7.37
|
||||
reactos/dll/win32/mstask # Synced to WineStaging-1.7.37
|
||||
reactos/dll/win32/mstask # Synced to WineStaging-1.7.47
|
||||
reactos/dll/win32/msvcrt20 # Out of sync
|
||||
reactos/dll/win32/msvcrt40 # Out of sync
|
||||
reactos/dll/win32/msvfw32 # Synced to WineStaging-1.7.37
|
||||
|
|
Loading…
Reference in a new issue