SHChangeNotify should use SHSimpleIDListFromPath as this function
should not fail on paths that do not exist anymore.

diff --git a/dlls/shell32/changenotify.c b/dlls/shell32/changenotify.c
index faf6a26..258f542 100644
--- a/dlls/shell32/changenotify.c
+++ b/dlls/shell32/changenotify.c
@@ -276,7 +276,6 @@
 {
     LPITEMIDLIST Pidls[2];
     LPNOTIFICATIONLIST ptr;
-    DWORD dummy;
     UINT typeFlag = uFlags & SHCNF_TYPE;
 
     Pidls[0] = NULL;
@@ -313,12 +312,12 @@
     switch (typeFlag)
     {
     case SHCNF_PATHA:
-        if (dwItem1) SHILCreateFromPathA((LPCSTR)dwItem1, &Pidls[0], &dummy);
-        if (dwItem2) SHILCreateFromPathA((LPCSTR)dwItem2, &Pidls[1], &dummy);
+        if (dwItem1) Pidls[0] = SHSimpleIDListFromPathA((LPCSTR)dwItem1);
+        if (dwItem2) Pidls[1] = SHSimpleIDListFromPathA((LPCSTR)dwItem2);
         break;
     case SHCNF_PATHW:
-        if (dwItem1) SHILCreateFromPathW((LPCWSTR)dwItem1, &Pidls[0], &dummy);
-        if (dwItem2) SHILCreateFromPathW((LPCWSTR)dwItem2, &Pidls[1], &dummy);
+        if (dwItem1) Pidls[0] = SHSimpleIDListFromPathW((LPCWSTR)dwItem1);
+        if (dwItem2) Pidls[1] = SHSimpleIDListFromPathW((LPCWSTR)dwItem2);
         break;
     case SHCNF_IDLIST:
         Pidls[0] = (LPITEMIDLIST)dwItem1;
@@ -392,8 +391,8 @@
     TRACE("notify Done\n");
     LeaveCriticalSection(&SHELL32_ChangenotifyCS);
     
-    /* if we allocated it, free it */
-    if ((typeFlag == SHCNF_PATHA) || (typeFlag == SHCNF_PATHW))
+    /* if we allocated it, free it. The ANSI flag is also set in its Unicode sibling. */
+    if ((typeFlag & SHCNF_PATHA) || (typeFlag & SHCNF_PRINTERA))
     {
         if (Pidls[0]) SHFree(Pidls[0]);
         if (Pidls[1]) SHFree(Pidls[1]);