//#define NDEBUG
#include <internal/debug.h>
+#if defined (ALLOC_PRAGMA)
+#pragma alloc_text(INIT, FsRtlpInitNotifyImplementation)
+#endif
-PAGED_LOOKASIDE_LIST NotifyEntryLookaside;
-#define FSRTL_NOTIFY_TAG TAG('N','O','T','I')
+PAGED_LOOKASIDE_LIST NotifyEntryLookaside;
typedef struct _NOTIFY_ENTRY
{
static
-inline
+__inline
BOOLEAN
FsRtlpIsUnicodePath(
PSTRING Path
PVOID FsContext
)
{
- PLIST_ENTRY EnumEntry;
PNOTIFY_ENTRY NotifyEntry;
- LIST_FOR_EACH(EnumEntry, NotifyList)
+ LIST_FOR_EACH(NotifyEntry, NotifyList, NOTIFY_ENTRY, ListEntry)
{
- NotifyEntry = CONTAINING_RECORD(EnumEntry, NOTIFY_ENTRY, ListEntry);
-
if (NotifyEntry->FsContext == FsContext)
{
return NotifyEntry;
)
{
LIST_ENTRY CompletedListHead;
- PLIST_ENTRY EnumEntry, TmpEntry;
- PNOTIFY_ENTRY NotifyEntry;
+ PLIST_ENTRY TmpEntry;
+ PNOTIFY_ENTRY NotifyEntry, tmp;
PIRP Irp;
InitializeListHead(&CompletedListHead);
ExAcquireFastMutex((PFAST_MUTEX)NotifySync);
- LIST_FOR_EACH_SAFE(EnumEntry, NotifyList, NotifyEntry, NOTIFY_ENTRY, ListEntry )
+ LIST_FOR_EACH_SAFE(NotifyEntry, tmp, NotifyList, NOTIFY_ENTRY, ListEntry )
{
if (NotifyEntry->Fcb == Fcb)
{
static
-inline
+__inline
VOID
FsRtlpCopyName(
PFILE_NOTIFY_INFORMATION CurrentEntry,
if (Unicode)
{
- memcpy(CurrentEntry->Name, RelativeName->Buffer, RelativeName->Length);
+ memcpy(CurrentEntry->FileName, RelativeName->Buffer, RelativeName->Length);
if (StreamName)
{
- CurrentEntry->Name[RelativeName->Length/sizeof(WCHAR)] = ':';
- memcpy(&CurrentEntry ->Name[(RelativeName->Length/sizeof(WCHAR))+1],
+ CurrentEntry->FileName[RelativeName->Length/sizeof(WCHAR)] = ':';
+ memcpy(&CurrentEntry->FileName[(RelativeName->Length/sizeof(WCHAR))+1],
StreamName->Buffer,
StreamName->Length);
}
{
USHORT FullDirLen;
STRING RelativeName;
+ PNOTIFY_ENTRY NotifyEntry, tmp;
PLIST_ENTRY EnumEntry;
- PNOTIFY_ENTRY NotifyEntry;
PIRP Irp;
LIST_ENTRY CompletedListHead;
USHORT NameLenU;
ExAcquireFastMutex((PFAST_MUTEX)NotifySync);
- LIST_FOR_EACH_SAFE(EnumEntry, NotifyList, NotifyEntry, NOTIFY_ENTRY, ListEntry )
+ LIST_FOR_EACH_SAFE(NotifyEntry, tmp, NotifyList, NOTIFY_ENTRY, ListEntry )
{
ASSERT(NotifyEntry->Unicode == FsRtlpIsUnicodePath(FullTargetName));
(StreamName ? ((StreamName->Length * sizeof(WCHAR)) + sizeof(WCHAR)) : 0);
}
- RecordLen = FIELD_OFFSET(FILE_NOTIFY_INFORMATION, Name) + NameLenU;
+ RecordLen = FIELD_OFFSET(FILE_NOTIFY_INFORMATION, FileName) + NameLenU;
if ((Irp = FsRtlpGetNextIrp(NotifyEntry)))
{
if (CurrentEntry)
{
CurrentEntry->Action = Action;
- CurrentEntry->NameLength = NameLenU;
+ CurrentEntry->FileNameLength = NameLenU;
CurrentEntry->NextEntryOffset = 0;
FsRtlpCopyName(
CurrentEntry = (PFILE_NOTIFY_INFORMATION)NotifyEntry->Buffer;
CurrentEntry->Action = Action;
- CurrentEntry->NameLength = NameLenU;
+ CurrentEntry->FileNameLength = NameLenU;
CurrentEntry->NextEntryOffset = 0;
FsRtlpCopyName(CurrentEntry,
VOID
STDCALL
FsRtlNotifyUninitializeSync (
- IN PNOTIFY_SYNC NotifySync
+ IN PNOTIFY_SYNC *NotifySync
)
{
- ExFreePool (NotifySync);
+ ExFreePool (*NotifySync);
}
/**********************************************************************