[PATCH 5/5] rtworkq: Add MMCSS-related stubs.

Nikolay Sivov nsivov at codeweavers.com
Tue Mar 31 07:46:38 CDT 2020


Signed-off-by: Nikolay Sivov <nsivov at codeweavers.com>
---
 dlls/mfplat/mfplat.spec   |  8 ++++--
 dlls/rtworkq/queue.c      | 57 +++++++++++++++++++++++++++++++++++++++
 dlls/rtworkq/rtworkq.spec | 16 +++++------
 include/mfapi.h           |  7 +++++
 include/rtworkq.idl       | 20 ++++++++++++++
 5 files changed, 98 insertions(+), 10 deletions(-)

diff --git a/dlls/mfplat/mfplat.spec b/dlls/mfplat/mfplat.spec
index 5311757d2b..25e5f62f21 100644
--- a/dlls/mfplat/mfplat.spec
+++ b/dlls/mfplat/mfplat.spec
@@ -24,6 +24,7 @@
 @ stdcall MFBeginCreateFile(long long long wstr ptr ptr ptr)
 @ stub MFBeginGetHostByName
 @ stub MFBeginRegisterWorkQueueWithMMCSS
+@ stdcall MFBeginRegisterWorkQueueWithMMCSSEx(long wstr long long ptr ptr) rtworkq.RtwqBeginRegisterWorkQueueWithMMCSS
 @ stub MFBeginUnregisterWorkQueueWithMMCSS
 @ stub MFBlockThread
 @ stub MFCalculateBitmapImageSize
@@ -107,8 +108,9 @@
 @ stdcall MFGetSystemTime()
 @ stdcall MFGetTimerPeriodicity(ptr)
 @ stub MFGetUncompressedVideoFormat
-@ stub MFGetWorkQueueMMCSSClass
-@ stub MFGetWorkQueueMMCSSTaskId
+@ stdcall MFGetWorkQueueMMCSSClass(long ptr ptr) rtworkq.RtwqGetWorkQueueMMCSSClass
+@ stdcall MFGetWorkQueueMMCSSTaskId(long ptr) rtworkq.RtwqGetWorkQueueMMCSSTaskId
+@ stdcall MFGetWorkQueueMMCSSPriority(long ptr) rtworkq.RtwqGetWorkQueueMMCSSPriority
 @ stdcall MFHeapAlloc(long long str long long)
 @ stdcall MFHeapFree(ptr)
 @ stub MFInitAMMediaTypeFromMFMediaType
@@ -135,6 +137,7 @@
 @ stub MFRecordError
 @ stdcall MFRegisterLocalByteStreamHandler(wstr wstr ptr)
 @ stdcall MFRegisterLocalSchemeHandler(wstr ptr)
+@ stdcall MFRegisterPlatformWithMMCSS(wstr ptr long) rtworkq.RtwqRegisterPlatformWithMMCSS
 @ stdcall MFRemovePeriodicCallback(long) rtworkq.RtwqRemovePeriodicCallback
 @ stdcall MFScheduleWorkItem(ptr ptr int64 ptr)
 @ stdcall MFScheduleWorkItemEx(ptr int64 ptr) rtworkq.RtwqScheduleWorkItem
@@ -156,6 +159,7 @@
 @ stdcall MFTUnregister(int128)
 @ stdcall MFTUnregisterLocal(ptr)
 @ stdcall MFTUnregisterLocalByCLSID(int128)
+@ stdcall MFUnregisterPlatformFromMMCSS() rtworkq.RtwqUnregisterPlatformFromMMCSS
 @ stub MFTraceError
 @ stub MFTraceFuncEnter
 @ stub MFUnblockThread
diff --git a/dlls/rtworkq/queue.c b/dlls/rtworkq/queue.c
index 32bd75b346..ce06df1c8c 100644
--- a/dlls/rtworkq/queue.c
+++ b/dlls/rtworkq/queue.c
@@ -1485,3 +1485,60 @@ HRESULT WINAPI RtwqUnjoinWorkQueue(DWORD queue, HANDLE cookie)
 
     return E_NOTIMPL;
 }
+
+HRESULT WINAPI RtwqGetWorkQueueMMCSSClass(DWORD queue, WCHAR *class, DWORD *length)
+{
+    FIXME("%#x, %p, %p.\n", queue, class, length);
+
+    return E_NOTIMPL;
+}
+
+HRESULT WINAPI RtwqGetWorkQueueMMCSSTaskId(DWORD queue, DWORD *taskid)
+{
+    FIXME("%#x, %p.\n", queue, taskid);
+
+    return E_NOTIMPL;
+}
+
+HRESULT WINAPI RtwqGetWorkQueueMMCSSPriority(DWORD queue, LONG *priority)
+{
+    FIXME("%#x, %p.\n", queue, priority);
+
+    return E_NOTIMPL;
+}
+
+HRESULT WINAPI RtwqRegisterPlatformWithMMCSS(const WCHAR *class, DWORD *taskid, LONG priority)
+{
+    FIXME("%s, %p, %d.\n", debugstr_w(class), taskid, priority);
+
+    return E_NOTIMPL;
+}
+
+HRESULT WINAPI RtwqUnregisterPlatformFromMMCSS(void)
+{
+    FIXME("\n");
+
+    return E_NOTIMPL;
+}
+
+HRESULT WINAPI RtwqBeginRegisterWorkQueueWithMMCSS(DWORD queue, const WCHAR *class, DWORD taskid, LONG priority,
+        IRtwqAsyncCallback *callback, IUnknown *state)
+{
+    FIXME("%#x, %s, %u, %d, %p, %p.\n", queue, debugstr_w(class), taskid, priority, callback, state);
+
+    return E_NOTIMPL;
+}
+
+HRESULT WINAPI RtwqRegisterPlatformEvents(IRtwqPlatformEvents *events)
+{
+    FIXME("%p.\n", events);
+
+    return E_NOTIMPL;
+}
+
+HRESULT WINAPI RtwqUnregisterPlatformEvents(IRtwqPlatformEvents *events)
+{
+    FIXME("%p.\n", events);
+
+    return E_NOTIMPL;
+}
diff --git a/dlls/rtworkq/rtworkq.spec b/dlls/rtworkq/rtworkq.spec
index 11955ac1a6..09d877790d 100644
--- a/dlls/rtworkq/rtworkq.spec
+++ b/dlls/rtworkq/rtworkq.spec
@@ -1,7 +1,7 @@
 @ stdcall RtwqAddPeriodicCallback(ptr ptr ptr)
 @ stdcall RtwqAllocateSerialWorkQueue(long ptr)
 @ stdcall RtwqAllocateWorkQueue(long ptr)
-@ stub RtwqBeginRegisterWorkQueueWithMMCSS
+@ stdcall RtwqBeginRegisterWorkQueueWithMMCSS(long wstr long long ptr ptr)
 @ stub RtwqBeginUnregisterWorkQueueWithMMCSS
 @ stdcall RtwqCancelDeadline(long)
 @ stub RtwqCancelMultipleWaitingWorkItem
@@ -10,9 +10,9 @@
 @ stub RtwqEndRegisterWorkQueueWithMMCSS
 @ stub RtwqEndUnregisterWorkQueueWithMMCSS
 @ stub RtwqGetPlatform
-@ stub RtwqGetWorkQueueMMCSSClass
-@ stub RtwqGetWorkQueueMMCSSPriority
-@ stub RtwqGetWorkQueueMMCSSTaskId
+@ stdcall RtwqGetWorkQueueMMCSSClass(long ptr ptr)
+@ stdcall RtwqGetWorkQueueMMCSSPriority(long ptr)
+@ stdcall RtwqGetWorkQueueMMCSSTaskId(long ptr)
 @ stdcall RtwqInvokeCallback(ptr)
 @ stdcall RtwqJoinWorkQueue(long long ptr)
 @ stdcall RtwqLockPlatform()
@@ -21,8 +21,8 @@
 @ stub RtwqPutMultipleWaitingWorkItem
 @ stdcall RtwqPutWaitingWorkItem(long long ptr ptr)
 @ stdcall RtwqPutWorkItem(long long ptr)
-@ stub RtwqRegisterPlatformEvents
-@ stub RtwqRegisterPlatformWithMMCSS
+@ stdcall RtwqRegisterPlatformEvents(ptr)
+@ stdcall RtwqRegisterPlatformWithMMCSS(wstr ptr long)
 @ stdcall RtwqRemovePeriodicCallback(long)
 @ stdcall RtwqScheduleWorkItem(ptr int64 ptr)
 @ stdcall RtwqSetDeadline(long int64 ptr)
@@ -33,5 +33,5 @@
 @ stdcall RtwqUnjoinWorkQueue(long long)
 @ stdcall RtwqUnlockPlatform()
 @ stdcall RtwqUnlockWorkQueue(long)
-@ stub RtwqUnregisterPlatformEvents
-@ stub RtwqUnregisterPlatformFromMMCSS
+@ stdcall RtwqUnregisterPlatformEvents(ptr)
+@ stdcall RtwqUnregisterPlatformFromMMCSS()
diff --git a/include/mfapi.h b/include/mfapi.h
index f83b7636fe..b9383630ab 100644
--- a/include/mfapi.h
+++ b/include/mfapi.h
@@ -488,6 +488,8 @@ HRESULT WINAPI MFAllocateWorkQueue(DWORD *queue);
 HRESULT WINAPI MFAllocateWorkQueueEx(MFASYNC_WORKQUEUE_TYPE queue_type, DWORD *queue);
 HRESULT WINAPI MFBeginCreateFile(MF_FILE_ACCESSMODE access_mode, MF_FILE_OPENMODE open_mode, MF_FILE_FLAGS flags,
         const WCHAR *path, IMFAsyncCallback *callback, IUnknown *state, IUnknown **cancel_cookie);
+HRESULT WINAPI MFBeginRegisterWorkQueueWithMMCSSEx(DWORD queue, const WCHAR *usage_class, DWORD taskid, LONG priority,
+        IMFAsyncCallback *callback, IUnknown *state);
 HRESULT WINAPI MFCalculateImageSize(REFGUID subtype, UINT32 width, UINT32 height, UINT32 *size);
 HRESULT WINAPI MFCancelCreateFile(IUnknown *cancel_cookie);
 HRESULT WINAPI MFCancelWorkItem(MFWORKITEM_KEY key);
@@ -518,6 +520,9 @@ HRESULT WINAPI MFGetAttributesAsBlobSize(IMFAttributes *attributes, UINT32 *size
 HRESULT WINAPI MFGetStrideForBitmapInfoHeader(DWORD format, DWORD width, LONG *stride);
 HRESULT WINAPI MFGetPlaneSize(DWORD format, DWORD width, DWORD height, DWORD *size);
 HRESULT WINAPI MFGetTimerPeriodicity(DWORD *periodicity);
+HRESULT WINAPI MFGetWorkQueueMMCSSClass(DWORD queue, WCHAR *class, DWORD *length);
+HRESULT WINAPI MFGetWorkQueueMMCSSPriority(DWORD queue, LONG *priority);
+HRESULT WINAPI MFGetWorkQueueMMCSSTaskId(DWORD queue, DWORD *taskid);
 HRESULT WINAPI MFTEnum(GUID category, UINT32 flags, MFT_REGISTER_TYPE_INFO *input_type,
                        MFT_REGISTER_TYPE_INFO *output_type, IMFAttributes *attributes,
                        CLSID **pclsids, UINT32 *pcount);
@@ -535,6 +540,7 @@ HRESULT WINAPI MFPutWorkItemEx(DWORD queue, IMFAsyncResult *result);
 HRESULT WINAPI MFPutWorkItemEx2(DWORD queue, LONG priority, IMFAsyncResult *result);
 HRESULT WINAPI MFRegisterLocalByteStreamHandler(const WCHAR *extension, const WCHAR *mime, IMFActivate *activate);
 HRESULT WINAPI MFRegisterLocalSchemeHandler(const WCHAR *scheme, IMFActivate *activate);
+HRESULT WINAPI MFRegisterPlatformWithMMCSS(const WCHAR *usage_class, DWORD *taskid, LONG priority);
 HRESULT WINAPI MFScheduleWorkItem(IMFAsyncCallback *callback, IUnknown *state, INT64 timeout, MFWORKITEM_KEY *key);
 HRESULT WINAPI MFScheduleWorkItemEx(IMFAsyncResult *result, INT64 timeout, MFWORKITEM_KEY *key);
 HRESULT WINAPI MFTRegister(CLSID clsid, GUID category, LPWSTR name, UINT32 flags, UINT32 cinput,
@@ -551,6 +557,7 @@ HRESULT WINAPI MFShutdown(void);
 HRESULT WINAPI MFStartup(ULONG version, DWORD flags);
 HRESULT WINAPI MFUnlockPlatform(void);
 HRESULT WINAPI MFUnlockWorkQueue(DWORD queue);
+HRESULT WINAPI MFUnregisterPlatformFromMMCSS(void);
 HRESULT WINAPI MFTUnregister(CLSID clsid);
 HRESULT WINAPI MFTUnregisterLocal(IClassFactory *factory);
 HRESULT WINAPI MFTUnregisterLocalByCLSID(CLSID clsid);
diff --git a/include/rtworkq.idl b/include/rtworkq.idl
index ca6645b862..ed32df1c3b 100644
--- a/include/rtworkq.idl
+++ b/include/rtworkq.idl
@@ -52,6 +52,18 @@ interface IRtwqAsyncCallback : IUnknown
     HRESULT Invoke([in] IRtwqAsyncResult *result);
 }
 
+[
+    object,
+    uuid(63d9255a-7ff1-4b61-8faf-ed6460dacf2b),
+    local
+]
+interface IRtwqPlatformEvents : IUnknown
+{
+    HRESULT InitializationComplete(void);
+    HRESULT ShutdownStart(void);
+    HRESULT ShutdownComplete(void);
+}
+
 cpp_quote("#define RTWQ_E_ERROR(x)            ((HRESULT)(0xc00d0000L+x))")
 cpp_quote("#define RTWQ_E_BUFFERTOOSMALL      RTWQ_E_ERROR(14001)")
 cpp_quote("#define RTWQ_E_NOT_INITIALIZED     RTWQ_E_ERROR(14006)")
@@ -80,9 +92,13 @@ cpp_quote("typedef void (WINAPI *RTWQPERIODICCALLBACK)(IUnknown *context);")
 cpp_quote("HRESULT WINAPI RtwqAddPeriodicCallback(RTWQPERIODICCALLBACK callback, IUnknown *context, DWORD *key);")
 cpp_quote("HRESULT WINAPI RtwqAllocateSerialWorkQueue(DWORD target_queue, DWORD *queue);")
 cpp_quote("HRESULT WINAPI RtwqAllocateWorkQueue(RTWQ_WORKQUEUE_TYPE queue_type, DWORD *queue);")
+cpp_quote("HRESULT WINAPI RtwqBeginRegisterWorkQueueWithMMCSS(DWORD queue, const WCHAR *class, DWORD taskid, LONG priority, IRtwqAsyncCallback *callback, IUnknown *state);")
 cpp_quote("HRESULT WINAPI RtwqCancelDeadline(HANDLE request);")
 cpp_quote("HRESULT WINAPI RtwqCancelWorkItem(RTWQWORKITEM_KEY key);")
 cpp_quote("HRESULT WINAPI RtwqCreateAsyncResult(IUnknown *object, IRtwqAsyncCallback *callback, IUnknown *state, IRtwqAsyncResult **result);")
+cpp_quote("HRESULT WINAPI RtwqGetWorkQueueMMCSSClass(DWORD queue, WCHAR *class, DWORD *length);")
+cpp_quote("HRESULT WINAPI RtwqGetWorkQueueMMCSSPriority(DWORD queue, LONG *priority);")
+cpp_quote("HRESULT WINAPI RtwqGetWorkQueueMMCSSTaskId(DWORD queue, DWORD *taskid);")
 cpp_quote("HRESULT WINAPI RtwqInvokeCallback(IRtwqAsyncResult *result);")
 cpp_quote("HRESULT WINAPI RtwqJoinWorkQueue(DWORD queue, HANDLE hFile, HANDLE *cookie);")
 cpp_quote("HRESULT WINAPI RtwqLockPlatform(void);")
@@ -90,6 +106,8 @@ cpp_quote("HRESULT WINAPI RtwqLockSharedWorkQueue(const WCHAR *usageclass, LONG
 cpp_quote("HRESULT WINAPI RtwqLockWorkQueue(DWORD queue);")
 cpp_quote("HRESULT WINAPI RtwqPutWaitingWorkItem(HANDLE event, LONG priority, IRtwqAsyncResult *result, RTWQWORKITEM_KEY *key);")
 cpp_quote("HRESULT WINAPI RtwqPutWorkItem(DWORD queue, LONG priority, IRtwqAsyncResult *result);")
+cpp_quote("HRESULT WINAPI RtwqRegisterPlatformEvents(IRtwqPlatformEvents *events);")
+cpp_quote("HRESULT WINAPI RtwqRegisterPlatformWithMMCSS(const WCHAR *class, DWORD *taskid, LONG priority);")
 cpp_quote("HRESULT WINAPI RtwqRemovePeriodicCallback(DWORD key);")
 cpp_quote("HRESULT WINAPI RtwqScheduleWorkItem(IRtwqAsyncResult *result, INT64 timeout, RTWQWORKITEM_KEY *key);")
 cpp_quote("HRESULT WINAPI RtwqSetDeadline(DWORD queue_id, LONGLONG deadline, HANDLE *request);")
@@ -100,3 +118,5 @@ cpp_quote("HRESULT WINAPI RtwqStartup(void);")
 cpp_quote("HRESULT WINAPI RtwqUnjoinWorkQueue(DWORD queue, HANDLE cookie);")
 cpp_quote("HRESULT WINAPI RtwqUnlockPlatform(void);")
 cpp_quote("HRESULT WINAPI RtwqUnlockWorkQueue(DWORD queue);")
+cpp_quote("HRESULT WINAPI RtwqUnregisterPlatformEvents(IRtwqPlatformEvents *events);")
+cpp_quote("HRESULT WINAPI RtwqUnregisterPlatformFromMMCSS(void);")
-- 
2.25.1




More information about the wine-devel mailing list