- 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);