diff --git a/reactos/drivers/filesystems/npfs_new/datasup.c b/reactos/drivers/filesystems/npfs_new/datasup.c index 177721394c4..292d8567076 100644 --- a/reactos/drivers/filesystems/npfs_new/datasup.c +++ b/reactos/drivers/filesystems/npfs_new/datasup.c @@ -126,7 +126,9 @@ NpRemoveDataQueueEntry(IN PNP_DATA_QUEUE DataQueue, --DataQueue->EntriesInQueue; HasWrites = 1; - if (!DataQueue->QueueState != WriteEntries || DataQueue->QuotaUsed < DataQueue->Quota || !QueueEntry->QuotaInEntry) + if (DataQueue->QueueState != WriteEntries || + DataQueue->QuotaUsed < DataQueue->Quota || + !QueueEntry->QuotaInEntry) { HasWrites = 0; } @@ -164,7 +166,7 @@ NpRemoveDataQueueEntry(IN PNP_DATA_QUEUE DataQueue, return Irp; } -PNP_DATA_QUEUE_ENTRY +PLIST_ENTRY NTAPI NpGetNextRealDataQueueEntry(IN PNP_DATA_QUEUE DataQueue, IN PLIST_ENTRY List) @@ -175,10 +177,9 @@ NpGetNextRealDataQueueEntry(IN PNP_DATA_QUEUE DataQueue, PLIST_ENTRY NextEntry; PAGED_CODE(); - NextEntry = DataQueue->Queue.Flink; - DataEntry = CONTAINING_RECORD(NextEntry, NP_DATA_QUEUE_ENTRY, QueueEntry); - - while (NextEntry != &DataQueue->Queue) + for (NextEntry = DataQueue->Queue.Flink; + NextEntry != &DataQueue->Queue; + NextEntry = DataQueue->Queue.Flink) { DataEntry = CONTAINING_RECORD(NextEntry, NP_DATA_QUEUE_ENTRY, QueueEntry); @@ -193,7 +194,7 @@ NpGetNextRealDataQueueEntry(IN PNP_DATA_QUEUE DataQueue, } } - return DataEntry; + return NextEntry; } VOID diff --git a/reactos/drivers/filesystems/npfs_new/npfs.h b/reactos/drivers/filesystems/npfs_new/npfs.h index 5876ebb29fc..e7160ddcde5 100644 --- a/reactos/drivers/filesystems/npfs_new/npfs.h +++ b/reactos/drivers/filesystems/npfs_new/npfs.h @@ -394,7 +394,7 @@ NTSTATUS NTAPI NpUninitializeDataQueue(IN PNP_DATA_QUEUE DataQueue); -PNP_DATA_QUEUE_ENTRY +PLIST_ENTRY NTAPI NpGetNextRealDataQueueEntry(IN PNP_DATA_QUEUE DataQueue, IN PLIST_ENTRY List); @@ -525,6 +525,10 @@ VOID NTAPI NpFreeClientSecurityContext(IN PSECURITY_CLIENT_CONTEXT ClientContext); +NTSTATUS +NTAPI +NpImpersonateClientContext(IN PNP_CCB Ccb); + VOID NTAPI NpCopyClientContext(IN PNP_CCB Ccb, diff --git a/reactos/drivers/filesystems/npfs_new/readsup.c b/reactos/drivers/filesystems/npfs_new/readsup.c index d22d0b9391e..5932b87a79f 100644 --- a/reactos/drivers/filesystems/npfs_new/readsup.c +++ b/reactos/drivers/filesystems/npfs_new/readsup.c @@ -48,7 +48,9 @@ NpReadDataQueue(IN PNP_DATA_QUEUE DataQueue, } else { - DataEntry = NpGetNextRealDataQueueEntry(DataQueue, List); + DataEntry = CONTAINING_RECORD(NpGetNextRealDataQueueEntry(DataQueue, List), + NP_DATA_QUEUE_ENTRY, + QueueEntry); } while ((&DataEntry->QueueEntry != &DataQueue->Queue) && (RemainingSize)) @@ -118,7 +120,9 @@ NpReadDataQueue(IN PNP_DATA_QUEUE DataQueue, { if (ReadOverflowOperation) { - TempDataEntry = NpGetNextRealDataQueueEntry(DataQueue, List); + TempDataEntry = CONTAINING_RECORD(NpGetNextRealDataQueueEntry(DataQueue, List), + NP_DATA_QUEUE_ENTRY, + QueueEntry); ASSERT(TempDataEntry == DataEntry); } @@ -149,7 +153,9 @@ NpReadDataQueue(IN PNP_DATA_QUEUE DataQueue, } else { - DataEntry = NpGetNextRealDataQueueEntry(DataQueue, List); + DataEntry = CONTAINING_RECORD(NpGetNextRealDataQueueEntry(DataQueue, List), + NP_DATA_QUEUE_ENTRY, + QueueEntry); } } diff --git a/reactos/drivers/filesystems/npfs_new/writesup.c b/reactos/drivers/filesystems/npfs_new/writesup.c index efe3f0385a0..0431786fb99 100644 --- a/reactos/drivers/filesystems/npfs_new/writesup.c +++ b/reactos/drivers/filesystems/npfs_new/writesup.c @@ -46,10 +46,14 @@ NpWriteDataQueue(IN PNP_DATA_QUEUE WriteQueue, MoreProcessing = FALSE; } - for (DataEntry = NpGetNextRealDataQueueEntry(WriteQueue, List); + for (DataEntry = CONTAINING_RECORD(NpGetNextRealDataQueueEntry(WriteQueue, List), + NP_DATA_QUEUE_ENTRY, + QueueEntry); ((WriteQueue->QueueState == ReadEntries) && ((*BytesNotWritten > 0) || (MoreProcessing))); - DataEntry = NpGetNextRealDataQueueEntry(WriteQueue, List)) + DataEntry = CONTAINING_RECORD(NpGetNextRealDataQueueEntry(WriteQueue, List), + NP_DATA_QUEUE_ENTRY, + QueueEntry)) { DataSize = DataEntry->DataSize;