[KERNEL32]
[reactos.git] / reactos / dll / win32 / kernel32 / file / cnotify.c
index 3f6420b..37814a1 100644 (file)
@@ -9,10 +9,14 @@
  *                  Created 01/11/98
  */
 
+/* INCLUDES *****************************************************************/
+
 #include <k32.h>
 #define NDEBUG
 #include <debug.h>
 
+/* FUNCTIONS ****************************************************************/
+
 /*
  * @implemented
  */
@@ -35,20 +39,30 @@ FindCloseChangeNotification (HANDLE hChangeHandle)
  */
 HANDLE
 WINAPI
-FindFirstChangeNotificationA (
-       LPCSTR  lpPathName,
-       BOOL    bWatchSubtree,
-       DWORD   dwNotifyFilter
-       )
+FindFirstChangeNotificationA(IN LPCSTR lpPathName,
+                             IN BOOL bWatchSubtree,
+                             IN DWORD dwNotifyFilter)
 {
-       PWCHAR PathNameW;
-
-   if (!(PathNameW = FilenameA2W(lpPathName, FALSE)))
-      return INVALID_HANDLE_VALUE;
-
-   return FindFirstChangeNotificationW (PathNameW ,
-                                               bWatchSubtree,
-                                               dwNotifyFilter);
+    NTSTATUS Status;
+    ANSI_STRING PathNameString;
+
+    RtlInitAnsiString(&PathNameString, lpPathName);
+    Status = RtlAnsiStringToUnicodeString(&(NtCurrentTeb()->StaticUnicodeString), &PathNameString, FALSE);
+    if (!NT_SUCCESS(Status))
+    {
+        if (Status != STATUS_BUFFER_OVERFLOW)
+        {
+            SetLastError(ERROR_FILENAME_EXCED_RANGE);
+        }
+        else
+        {
+            BaseSetLastNTError(Status);
+        }
+        return INVALID_HANDLE_VALUE;
+    }
+
+    return FindFirstChangeNotificationW(NtCurrentTeb()->StaticUnicodeString.Buffer,
+                                        bWatchSubtree, dwNotifyFilter);
 }