3 #define WIN32_NO_STATUS
8 #define WIN32_NO_STATUS
10 #define COM_NO_WINDOWS_H
11 #define NTOS_MODE_USER
19 #include <shlguid_undoc.h>
22 #include <shlobj_undoc.h>
23 #include <shlwapi_undoc.h>
32 #include <wine/debug.h>
33 #include <wine/unicode.h>
37 extern HINSTANCE g_hInstance
;
39 #define ID_ICON_VOLUME 0x4CB
43 typedef HRESULT(STDMETHODCALLTYPE
* PFNSTINIT
) (_In_ CSysTray
* pSysTray
);
44 typedef HRESULT(STDMETHODCALLTYPE
* PFNSTSHUTDOWN
) (_In_ CSysTray
* pSysTray
);
45 typedef HRESULT(STDMETHODCALLTYPE
* PFNSTUPDATE
) (_In_ CSysTray
* pSysTray
);
46 typedef HRESULT(STDMETHODCALLTYPE
* PFNSTMESSAGE
) (_In_ CSysTray
* pSysTray
, UINT uMsg
, WPARAM wParam
, LPARAM lParam
);
48 struct SysTrayIconHandlers_t
51 PFNSTSHUTDOWN pfnShutdown
;
52 PFNSTUPDATE pfnUpdate
;
53 PFNSTMESSAGE pfnMessage
;
56 extern SysTrayIconHandlers_t g_IconHandlers
[];
57 extern const int g_NumIcons
;
59 /* --------------- Icon callbacks ------------------------------ */
61 extern HRESULT STDMETHODCALLTYPE
Volume_Init(_In_ CSysTray
* pSysTray
);
62 extern HRESULT STDMETHODCALLTYPE
Volume_Shutdown(_In_ CSysTray
* pSysTray
);
63 extern HRESULT STDMETHODCALLTYPE
Volume_Update(_In_ CSysTray
* pSysTray
);
64 extern HRESULT STDMETHODCALLTYPE
Volume_Message(_In_ CSysTray
* pSysTray
, UINT uMsg
, WPARAM wParam
, LPARAM lParam
);
66 /* --------------- Utils ------------------------------ */
69 Win32DbgPrint(const char *filename
, int line
, const char *lpFormat
, ...)
77 fname
= strrchr(filename
, '\\');
80 fname
= strrchr(filename
, '/');
88 szMsgStart
= szMsg
+ sprintf(szMsg
, "[%10lu] %s:%d: ", GetTickCount(), fname
, line
);
90 va_start(vl
, lpFormat
);
91 uRet
= (ULONG
) vsprintf(szMsgStart
, lpFormat
, vl
);
94 OutputDebugStringA(szMsg
);
99 #define DbgPrint(fmt, ...) \
100 Win32DbgPrint(__FILE__, __LINE__, fmt, ##__VA_ARGS__)
103 #define FAILED_UNEXPECTEDLY(hr) (FAILED(hr) && (DbgPrint("Unexpected failure %08x.\n", hr), TRUE))
105 #define FAILED_UNEXPECTEDLY(hr) FAILED(hr)