35 public CWindowImpl<CChangeNotifyServer, CWindow, CWorkerTraits>,
36 public CComObjectRootEx<CComMultiThreadModelNoCS>,
123 if (hwndBroker && hwndBroker != *phwndBroker)
126 *phwndBroker = hwndBroker;
192 if (pRegEntry->
ibPidl == 0)
203 if (pDirectoryWatcher ==
NULL)
206 return pDirectoryWatcher;
223 ERR(
"pRegEntry is invalid\n");
232 TRACE(
"pRegEntry->nRegID: %u\n", pRegEntry->
nRegID);
243 if (pNewEntry ==
NULL)
245 ERR(
"Out of memory\n");
259 ERR(
"RequestAddWatcher failed: %u\n", pRegEntry->
nRegID);
287 ERR(
"INVALID_REG_ID\n");
318 TRACE(
"OnSuspendResume\n");
355 TRACE(
"DeliverNotification(%p, %p, 0x%lx)\n", m_hWnd, hTicket, dwOwnerPID);
361 ERR(
"pTicket is invalid\n");
375 ERR(
"pRegEntry is invalid\n");
384 TRACE(
"Notifying: %p, 0x%x, %p, %lu\n",
385 pRegEntry->
hwnd, pRegEntry->
uMsg, hTicket, dwOwnerPID);
399 #define RETURN(x) do { \ 400 TRACE("ShouldNotify return %d\n", (x)); \ 478 return ShellObjectCreatorInit<CChangeNotifyServer>(
riid,
ppv);
BOOL RemoveItemsByProcess(DWORD dwUserPID)
BOOL WINAPI PathIsDirectoryW(LPCWSTR lpszPath)
LRESULT OnRemoveByPID(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled)
#define SHCNE_GLOBALEVENTS
PVOID WINAPI SHLockSharedEx(HANDLE hData, DWORD dwProcessId, BOOL bWriteAccess)
LRESULT OnUnRegister(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled)
DWORD WINAPI GetWindowThreadProcessId(HWND hWnd, PDWORD lpdwProcessId)
HRESULT CChangeNotifyServer_CreateInstance(REFIID riid, void **ppv)
BOOL WINAPI SHGetPathFromIDListW(LPCITEMIDLIST pidl, LPWSTR pszPath)
#define DECLARE_WND_CLASS_EX(WndClassName, style, bkgnd)
DWORD WINAPI GetLastError(VOID)
#define DECLARE_NOT_AGGREGATABLE(x)
LRESULT OnRegister(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled)
BOOL WINAPI ILIsEqual(LPCITEMIDLIST pidl1, LPCITEMIDLIST pidl2)
BOOL WINAPI DestroyWindow(_In_ HWND)
BOOL AddItem(CWatchItem *pItem)
LRESULT OnSuspendResume(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled)
static CDirectoryWatcher * CreateDirectoryWatcherFromRegEntry(LPREGENTRY pRegEntry)
#define SubclassWindow(hwnd, lpfn)
#define SHCNRF_InterruptLevel
#define CN_UNREGISTER_PROCESS
CDirectoryWatcher * pDirWatch
static void RequestAllWatchersTermination()
MESSAGE_HANDLER(CN_UNREGISTER_PROCESS, OnRemoveByPID)
virtual HRESULT STDMETHODCALLTYPE ContextSensitiveHelp(BOOL fEnterMode)
static CDirectoryWatcher * Create(LPCWSTR pszDirectoryPath, BOOL fSubTree)
void DestroyItem(CWatchItem *pItem, HWND *phwndBroker)
virtual HRESULT STDMETHODCALLTYPE GetWindow(HWND *lphwnd)
LRESULT OnDeliverNotification(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled)
#define SHCNRF_ShellLevel
#define STDMETHODCALLTYPE
BOOL WINAPI SHFreeShared(HANDLE hShared, DWORD dwProcId)
BOOL RemoveItemsByRegID(UINT nRegID)
#define CN_DELIVER_NOTIFICATION
BOOL ShouldNotify(LPDELITICKET pTicket, LPREGENTRY pRegEntry)
BOOL RequestTermination()
BOOL WINAPI ILIsParent(LPCITEMIDLIST pidlParent, LPCITEMIDLIST pidlChild, BOOL bImmediate)
CSimpleArray< CWatchItem * > m_items
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
BOOL DeliverNotification(HANDLE hTicket, DWORD dwOwnerPID)
#define COM_INTERFACE_ENTRY_IID(iid, x)
LRESULT WINAPI SendMessageW(_In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
struct DELITICKET * LPDELITICKET
#define BEGIN_MSG_MAP(theClass)
#define DECLARE_PROTECT_FINAL_CONSTRUCT()
void WINAPI SHFree(LPVOID pv)
WINE_DEFAULT_DEBUG_CHANNEL(shcn)
const GUID IID_IOleWindow
BOOL WINAPI SHUnlockShared(LPVOID lpView)
virtual ~CChangeNotifyServer()
LRESULT OnDestroy(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled)
ITEMIDLIST UNALIGNED * LPITEMIDLIST
HWND SHCreateDefaultWorkerWindow(VOID)
LPVOID WINAPI SHAlloc(SIZE_T len)
struct REGENTRY * LPREGENTRY
#define CN_SUSPEND_RESUME