35 public CWindowImpl<CChangeNotifyServer, CWindow, CWorkerTraits>,
36 public CComObjectRootEx<CComMultiThreadModelNoCS>,
123 if (hwndBroker && hwndBroker != *phwndBroker)
126 *phwndBroker = hwndBroker;
192 if (pRegEntry->
ibPidl == 0)
204 if (pDirectoryWatcher ==
NULL)
207 return pDirectoryWatcher;
224 ERR(
"pRegEntry is invalid\n");
233 TRACE(
"pRegEntry->nRegID: %u\n", pRegEntry->
nRegID);
244 if (pNewEntry ==
NULL)
246 ERR(
"Out of memory\n");
260 ERR(
"RequestAddWatcher failed: %u\n", pRegEntry->
nRegID);
288 ERR(
"INVALID_REG_ID\n");
319 TRACE(
"OnSuspendResume\n");
356 TRACE(
"DeliverNotification(%p, %p, 0x%lx)\n", m_hWnd, hTicket, dwOwnerPID);
362 ERR(
"pTicket is invalid\n");
376 ERR(
"pRegEntry is invalid\n");
385 TRACE(
"Notifying: %p, 0x%x, %p, %lu\n",
386 pRegEntry->
hwnd, pRegEntry->
uMsg, hTicket, dwOwnerPID);
400#define RETURN(x) do { \
401 TRACE("ShouldNotify return %d\n", (x)); \
479 return ShellObjectCreatorInit<CChangeNotifyServer>(
riid,
ppv);
static CDirectoryWatcher * CreateDirectoryWatcherFromRegEntry(LPREGENTRY pRegEntry)
HRESULT CChangeNotifyServer_CreateInstance(REFIID riid, void **ppv)
struct DELITICKET * LPDELITICKET
#define CN_DELIVER_NOTIFICATION
#define CN_UNREGISTER_PROCESS
struct REGENTRY * LPREGENTRY
HWND SHCreateDefaultWorkerWindow(VOID)
#define CN_SUSPEND_RESUME
#define WINE_DEFAULT_DEBUG_CHANNEL(t)
STDMETHOD() GetWindow(HWND *lphwnd) override
LRESULT OnRegister(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled)
STDMETHOD() ContextSensitiveHelp(BOOL fEnterMode) override
BOOL ShouldNotify(LPDELITICKET pTicket, LPREGENTRY pRegEntry)
CSimpleArray< CWatchItem * > m_items
LRESULT OnDeliverNotification(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled)
BOOL RemoveItemsByRegID(UINT nRegID)
LRESULT OnRemoveByPID(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled)
BOOL RemoveItemsByProcess(DWORD dwUserPID)
LRESULT OnSuspendResume(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled)
BOOL DeliverNotification(HANDLE hTicket, DWORD dwOwnerPID)
void DestroyItem(CWatchItem *pItem, HWND *phwndBroker)
BOOL AddItem(CWatchItem *pItem)
virtual ~CChangeNotifyServer()
LRESULT OnUnRegister(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled)
LRESULT OnDestroy(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled)
static CDirectoryWatcher * Create(HWND hNotifyWnd, LPCWSTR pszDirectoryPath, BOOL fSubTree)
BOOL RequestTermination()
static void RequestAllWatchersTermination()
void WINAPI SHFree(LPVOID pv)
LPVOID WINAPI SHAlloc(SIZE_T len)
BOOL WINAPI SHFreeShared(HANDLE hShared, DWORD dwProcId)
BOOL WINAPI SHUnlockShared(LPVOID lpView)
BOOL WINAPI PathIsDirectoryW(LPCWSTR lpszPath)
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
#define COM_INTERFACE_ENTRY_IID(iid, x)
#define DECLARE_PROTECT_FINAL_CONSTRUCT()
#define DECLARE_NOT_AGGREGATABLE(x)
#define MESSAGE_HANDLER(msg, func)
#define BEGIN_MSG_MAP(theClass)
#define DECLARE_WND_CLASS_EX(WndClassName, style, bkgnd)
const GUID IID_IOleWindow
BOOL WINAPI ILIsParent(LPCITEMIDLIST pidlParent, LPCITEMIDLIST pidlChild, BOOL bImmediate)
BOOL WINAPI SHGetPathFromIDListW(LPCITEMIDLIST pidl, LPWSTR pszPath)
BOOL WINAPI ILIsEqual(LPCITEMIDLIST pidl1, LPCITEMIDLIST pidl2)
#define SHCNRF_ShellLevel
#define SHCNRF_InterruptLevel
#define SHCNE_GLOBALEVENTS
PVOID WINAPI SHLockSharedEx(HANDLE hData, DWORD dwProcessId, BOOL bWriteAccess)
ITEMIDLIST UNALIGNED * LPITEMIDLIST
CDirectoryWatcher * pDirWatch
DWORD WINAPI GetLastError(void)
DWORD WINAPI GetWindowThreadProcessId(HWND hWnd, PDWORD lpdwProcessId)
#define SubclassWindow(hwnd, lpfn)
BOOL WINAPI DestroyWindow(_In_ HWND)
LRESULT WINAPI SendMessageW(_In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)