38#define RX_TOPLEVELCTX_FLAG_FROM_POOL 1
626 RxAssert(#exp, __FILE__, __LINE__, NULL); \
632#undef RxAllocatePoolWithTag
635#define RxAllocatePool(P, S) _RxAllocatePoolWithTag(P, S, 0)
636#define RxAllocatePoolWithTag _RxAllocatePoolWithTag
637#define RxFreePool _RxFreePool
638#define RxFreePoolWithTag _RxFreePoolWithTag
654#define ALLSCR_LENGTH (sizeof(L"all.scr") - sizeof(UNICODE_NULL))
680 DPRINT(
"__RxInitializeTopLevelIrpContext(%p, %p, %p, %u)\n", TopLevelContext,
Irp, RxDeviceObject,
Flags);
683 TopLevelContext->Irp =
Irp;
686 TopLevelContext->RxDeviceObject = RxDeviceObject;
719 if (ResourceOwnerSet)
735 if (ResourceOwnerSet)
757 DPRINT(
"RxAddToTopLevelIrpAllocatedContextsList(%p)\n", TopLevelContext);
782 RxContext->PostRequest =
FALSE;
832 BOOLEAN FileModified, SetLastChange, SetLastAccess, SetLastWrite, NeedUpdate;
855 SetLastAccess = SetLastWrite ||
862 if (!FileModified && !SetLastWrite && !SetLastAccess && !SetLastChange)
899 RxContext->
Info.Buffer = &FileBasicInfo;
900 RxContext->
Info.Length =
sizeof(FileBasicInfo);
912 RxContext->
Info.Buffer = &FileEOFInfo;
913 RxContext->
Info.Length =
sizeof(FileEOFInfo);
931 DPRINT(
"RxContext: %p - CanonicalNameBuffer: %p\n", RxContext, RxContext->
Create.CanonicalNameBuffer);
949 CanonicalName->
Length = 0;
953 RxContext->
Create.CanonicalNameBuffer = CanonicalName->
Buffer;
1089 if (!ForceFilesClosed)
1146 OperationToCancel =
FALSE;
1175 OperationToCancel =
TRUE;
1182 if (OperationToCancel)
1188 return OperationToCancel;
1242 if (RxContext !=
NULL)
1265 USHORT NextChar, CurChar;
1278 for (NextChar = 0, CurChar = 0; CurChar + 1 < MaxChars; NextChar = CurChar + 1)
1282 for (
i = NextChar + 1;
i < MaxChars; ++
i)
1284 if (NetRootName->
Buffer[
i] ==
'\\' || NetRootName->
Buffer[
i] ==
':')
1291 if (CurChar == NextChar)
1293 if (((NetRootName->
Buffer[NextChar] !=
'\\' && NetRootName->
Buffer[NextChar] !=
':') || NextChar == (MaxChars - 1)) && NetRootName->
Buffer[NextChar] !=
'.')
1300 if (CurChar >= MaxChars - 1)
1305 if (NetRootName->
Buffer[CurChar + 1] !=
':')
1312 if (NetRootName->
Buffer[1] !=
':')
1320 if ((CurChar - NextChar) == 1)
1322 if (NetRootName->
Buffer[NextChar + 2] !=
'.')
1327 if (NetRootName->
Buffer[NextChar] ==
'\\' || NetRootName->
Buffer[NextChar] ==
':' || NetRootName->
Buffer[NextChar] ==
'.')
1334 if ((CurChar - NextChar) != 2 || (NetRootName->
Buffer[NextChar] !=
'\\' && NetRootName->
Buffer[NextChar] !=
':')
1335 || NetRootName->
Buffer[NextChar + 1] !=
'.')
1340 if (NetRootName->
Buffer[NextChar + 2] ==
'.')
1368 RtlInitEmptyUnicodeString(NetRootName,
NULL, 0);
1369 RtlInitEmptyUnicodeString(&CanonicalName,
NULL, 0);
1433 MINIRDR_CALL(IgnoredStatus, RxContext, RxContext->
Create.pNetRoot->pSrvCall->RxDeviceObject->Dispatch,
1434 MRxPreparseName, (RxContext, NetRootName));
1435 (
void)IgnoredStatus;
1547 CloseSrvOpen =
FALSE;
1554 SrvOpen = Fobx->SrvOpen;
1559 CloseSrvOpen =
TRUE;
1568 if (SrvOpen->OpenCount > 0)
1570 --SrvOpen->OpenCount;
1586 if (RxContext ==
NULL)
1597 if (RxContext ==
NULL)
1602 if (LocalContext ==
NULL)
1614 LocalContext = RxContext;
1630 if (SrvOpen ==
NULL)
1635 if (LocalContext != RxContext)
1646 if (LocalContext != RxContext)
1655 if (SrvOpen->OpenCount > 0)
1657 --SrvOpen->OpenCount;
1661 if (SrvOpen->OpenCount == 1)
1673 if (SrvOpen->OpenCount == 0 && RxContext ==
NULL)
1679 SrvOpen = Fobx->SrvOpen;
1680 if (SrvOpen ==
NULL ||
1685 if (LocalContext != RxContext)
1697 DPRINT(
"MRxCloseSrvOpen returned: %lx, called with RX_CONTEXT %p for FOBX %p (FCB %p, SRV_OPEN %p)\n ",
1702 SrvOpen->Key = (
PVOID)-1;
1720 if (LocalContext != RxContext)
1747 DPRINT(
"RxCollapseOrCreateSrvOpen(%p)\n", RxContext);
1763 if (SrvOpen ==
NULL)
1797 capFcb->Header.AllocationSize.QuadPart = 0
LL;
1798 capFcb->Header.FileSize.QuadPart = 0
LL;
1799 capFcb->Header.ValidDataLength.QuadPart = 0
LL;
1833 SrvOpen->CreateOptions = RxContext->
Create.NtCreateParameters.CreateOptions;
1869 ++SrvOpen->OpenCount;
1899 --SrvOpen->OpenCount;
1918#define BugCheckFileId RDBSS_BUG_CHECK_CLEANUP
1927 BOOLEAN NeedPurge, FcbTableAcquired, OneLeft, IsFile, FcbAcquired, LeftForDelete;
1969 Fobx->AssociatedFileObject =
NULL;
1979 --
Fcb->UncachedUncleanCount;
1986 --Fobx->
SrvOpen->UncleanFobxCount;
2008 FcbTableAcquired =
FALSE;
2009 LeftForDelete =
FALSE;
2019 FcbTableAcquired =
TRUE;
2034 FcbTableAcquired =
TRUE;
2040 LeftForDelete =
TRUE;
2045 FcbTableAcquired =
FALSE;
2050 TruncateSizePtr =
NULL;
2066 if (
Context->LowIoContext.ParamsFor.Locks.LockList !=
NULL)
2069 Context->LowIoContext.ParamsFor.Locks.Flags = 0;
2085 Fcb->
Header.ValidDataLength.QuadPart = 0;
2107 TruncateSizePtr = &TruncateSize;
2136 --
Fcb->UncachedUncleanCount;
2143 --Fobx->
SrvOpen->UncleanFobxCount;
2152 DPRINT(
"Flushing %p due to last cached handle cleanup\n",
Context);
2169 if (
Fcb->UncachedUncleanCount != 0)
2181 if (!LeftForDelete && NeedPurge)
2190 DPRINT(
"Uninit cache map for file\n");
2195 if (LeftForDelete || NeedPurge)
2203 FcbTableAcquired =
FALSE;
2215 RxWriteCacheingAllowed(
Fcb, Fobx->pSrvOpen))
2225 if (InternalContext !=
NULL)
2239 InternalContext->
Info.Buffer = &FileEOF;
2240 InternalContext->
Info.Length =
sizeof(FileEOF);
2250 ClearFlag(Fobx->Flags, FOBX_FLAG_DISABLE_COLLAPSING);
2261 FcbAcquired =
FALSE;
2271 if (FcbTableAcquired)
2279#undef BugCheckFileId
2287#define BugCheckFileId RDBSS_BUG_CHECK_CLOSE
2292 BOOLEAN DereferenceFobx, AcquiredFcb;
2322 DereferenceFobx =
FALSE;
2338 DPRINT(
"Delay close for FOBX: %p, SrvOpen %p\n", Fobx, SrvOpen);
2348 DereferenceFobx =
TRUE;
2357 if (!DereferenceFobx)
2385 if (DereferenceFobx)
2400 AcquiredFcb = !Freed;
2411 AcquiredFcb =
FALSE;
2432#undef BugCheckFileId
2478 DPRINT1(
"Create.Options: %x\n",
Stack->Parameters.Create.Options);
2482 DPRINT(
"Ctxt: %p, FO: %p, Options: %lx, Flags: %lx, Attr: %lx, ShareAccess: %lx, DesiredAccess: %lx\n",
2484 Stack->Parameters.Create.ShareAccess,
Stack->Parameters.Create.SecurityContext->DesiredAccess);
2489 RelatedFcb =
FileObject->RelatedFileObject->FsContext;
2572 if (
Context->Create.TryForScavengingOnSharingViolation &&
2573 !
Context->Create.ScavengingAlreadyTried)
2622 Context->CurrentIrp->IoStatus.Information = 0;
2702 if (NetRoot !=
NULL)
2829 DPRINT(
"RxCommonDirectoryControl(%p) FOBX: %p, FCB: %p, Minor: %d\n",
Context, Fobx,
Fcb,
Stack->MinorFunction);
2917#define SET_SIZE_AND_QUERY(AlreadyConsummed, Function) \
2918 Context->Info.Length = Stack->Parameters.QueryFile.Length - (AlreadyConsummed); \
2919 Status = Function(Context, Add2Ptr(Buffer, AlreadyConsummed))
2933 DPRINT(
"RxCommonQueryInformation(%p) FCB: %p, FOBX: %p\n",
Context,
Fcb, Fobx);
2937 DPRINT(
"Buffer: %p, Length: %lx, Class: %ld\n",
Irp->AssociatedIrp.SystemBuffer,
2938 Stack->Parameters.QueryFile.Length,
Stack->Parameters.QueryFile.FileInformationClass);
2940 Context->Info.Length =
Stack->Parameters.QueryFile.Length;
2941 FileInfoClass =
Stack->Parameters.QueryFile.FileInformationClass;
3008 switch (FileInfoClass)
3097 Context->Info.Length =
Stack->Parameters.QueryFile.Length;
3100 Irp->IoStatus.Information =
Stack->Parameters.QueryFile.Length -
Context->Info.Length;
3114#undef SET_SIZE_AND_QUERY
3154 DPRINT(
"RxCommonQueryVolumeInformation(%p) FCB: %p, FOBX: %p\n",
Context,
Fcb, Fobx);
3158 DPRINT(
"Length: %lx, Class: %lx, Buffer %p\n",
Stack->Parameters.QueryVolume.Length,
3159 Stack->Parameters.QueryVolume.FsInformationClass,
Irp->AssociatedIrp.SystemBuffer);
3161 Context->Info.FsInformationClass =
Stack->Parameters.QueryVolume.FsInformationClass;
3162 Context->Info.Buffer =
Irp->AssociatedIrp.SystemBuffer;
3163 Context->Info.Length =
Stack->Parameters.QueryVolume.Length;
3175 Irp->IoStatus.Information =
Stack->Parameters.QueryVolume.Length -
Context->Info.Length;
3199 BOOLEAN CanWait, PagingIo, NoCache, Sync, PostRequest,
IsPipe, ReadCachingEnabled, ReadCachingDisabled, InFsp, OwnerSet;
3205 DPRINT(
"RxCommonRead(%p) FOBX: %p, FCB: %p\n", RxContext, Fobx,
Fcb);
3218 (CanWait ?
"CW" :
"!CW"), (PagingIo ?
"PI" :
"!PI"), (NoCache ?
"NC" :
"!NC"), (Sync ?
"S" :
"!S"));
3222 Irp->IoStatus.Information = 0;
3231 DPRINT(
"LoudRead %I64x/%lx on %lx vdl/size/alloc %I64x/%I64x/%I64x\n",
3284 PostRequest =
FALSE;
3285 ReadCachingDisabled =
FALSE;
3295 if (!PagingIo && NoCache && !ReadCachingEnabled &&
FileObject->SectionObjectPointer !=
NULL)
3323 if (PagingIo && !ReadCachingEnabled)
3340 if (!ReadCachingEnabled)
3342 if (!CanWait && NoCache)
3347 DPRINT1(
"RdAsyLNG %x\n", RxContext);
3353 DPRINT1(
"RdAsyOthr %x\n", RxContext);
3385 ReadCachingDisabled = (ReadCachingEnabled ==
FALSE);
3419 if (!PagingIo && !NoCache && ReadCachingEnabled &&
3463 if (SystemBuffer ==
NULL)
3476 if (!ReadCachingEnabled)
3487 if (!ReadCachingEnabled)
3515 if (InFsp && ReadCachingDisabled)
3559 if (!
IsPipe && !PagingIo)
3571 if (!
IsPipe && !PagingIo)
3581 if (ReadCachingDisabled)
3623 ASSERT(
Irp->IoStatus.Information <=
Stack->Parameters.Read.Length);
3662 BOOLEAN CanWait, FcbTableAcquired, FcbAcquired;
3668 DPRINT(
"RxCommonSetInformation(%p), FCB: %p, FOBX: %p\n",
Context,
Fcb, Fobx);
3672 Class =
Stack->Parameters.SetFile.FileInformationClass;
3673 DPRINT(
"Buffer: %p, Length: %lx, Class: %ld, ReplaceIfExists: %d\n",
3674 Irp->AssociatedIrp.SystemBuffer,
Stack->Parameters.SetFile.Length,
3675 Class,
Stack->Parameters.SetFile.ReplaceIfExists);
3679 FcbTableAcquired =
FALSE;
3680 FcbAcquired =
FALSE;
3734 FcbTableAcquired =
TRUE;
3768 FDI =
Irp->AssociatedIrp.SystemBuffer;
3780 ASSERT(FcbAcquired && FcbTableAcquired);
3784 FcbTableAcquired =
FALSE;
3831 ASSERT(FcbAcquired && FcbTableAcquired);
3880 if (FcbTableAcquired)
3887#undef _SEH2_TRY_RETURN
3946 LONGLONG FileSize, ValidDataLength, InitialFileSize, InitialValidDataLength;
3947 BOOLEAN CanWait, PagingIo, NoCache, Sync, NormalFile, WriteToEof,
IsPipe, NoPreposting, InFsp, RecursiveWriteThrough, CalledByLazyWriter, SwitchBackToAsync, ExtendingFile, ExtendingValidData, UnwindOutstandingAsync, ResourceOwnerSet, PostIrp, ContextReferenced;
3971 DPRINT(
"RxCommonWrite(%p) FOBX: %p, FCB: %p\n", RxContext, Fobx,
Fcb);
3984 (CanWait ?
"CW" :
"!CW"), (PagingIo ?
"PI" :
"!PI"), (NoCache ?
"NC" :
"!NC"), (Sync ?
"S" :
"!S"));
3995 DPRINT(
"LoudWrite %I64x/%lx on %lx vdl/size/alloc %I64x/%I64x/%I64x\n",
4069 if (RxWriteCacheingAllowed(
Fcb, SrvOpen))
4094 RecursiveWriteThrough =
FALSE;
4095 CalledByLazyWriter =
FALSE;
4096 SwitchBackToAsync =
FALSE;
4097 ExtendingFile =
FALSE;
4098 ExtendingValidData =
FALSE;
4099 UnwindOutstandingAsync =
FALSE;
4100 ResourceOwnerSet =
FALSE;
4102 ContextReferenced =
FALSE;
4104#define _SEH2_TRY_RETURN(S) S; goto try_exit
4114 ASSERT(!(WriteToEof && PagingIo));
4119 if (!PagingIo && !NoPreposting)
4134 (!NoCache && RxWriteCacheingAllowed(
Fcb, SrvOpen)))
4147 DPRINT1(
"Failed to acquire lock!\n");
4193 DPRINT1(
"Failed to acquire lock!\n");
4207 if (
ByteOffset.QuadPart + WriteLength <= Fcb->
Header.ValidDataLength.QuadPart ||
4220 DPRINT(
"Disabling collapsing\n");
4224 SetFlag(Fobx->Flags, FOBX_FLAG_DISABLE_COLLAPSING);
4253 if (NoCache || !RxWriteCacheingAllowed(
Fcb, SrvOpen))
4274 DPRINT1(
"Failed to acquire lock for flush!\n");
4328 ValidDataLength =
Fcb->
Header.ValidDataLength.QuadPart;
4351 CalledByLazyWriter =
TRUE;
4386 RecursiveWriteThrough =
TRUE;
4393 if (!CalledByLazyWriter && !RecursiveWriteThrough &&
4407 SwitchBackToAsync =
TRUE;
4412 RxWriteReleaseResources(RxContext, 0);
4419 DPRINT1(
"Failed to acquire lock for extension!\n");
4433 ValidDataLength =
Fcb->
Header.ValidDataLength.QuadPart;
4441 SwitchBackToAsync =
FALSE;
4461 InitialValidDataLength = ValidDataLength;
4479 DPRINT(
"Need to extend file\n");
4480 ExtendingFile =
TRUE;
4494 DPRINT(
"Extending %p\n", RxContext);
4535 if (!CalledByLazyWriter && !RecursiveWriteThrough)
4539 ExtendingValidData =
TRUE;
4545 if (PagingIo || NoCache || !RxWriteCacheingAllowed(
Fcb, SrvOpen))
4548 if (SwitchBackToAsync)
4574 UnwindOutstandingAsync =
TRUE;
4602 ResourceOwnerSet =
TRUE;
4613 UnwindOutstandingAsync =
FALSE;
4644 &
Irp->MdlAddress, &
Irp->IoStatus);
4651 ULONG BreakpointsSave;
4655 if (SystemBuffer ==
NULL)
4672 DPRINT1(
"CcCopyWrite failed for: %p %I64d %d %lx\n",
4686 DPRINT(
"CcCopyWrite succeed for: %p %I64d %d %lx\n",
4698 if (ExtendingFile && !
IsPipe)
4700 ASSERT(RxWriteCacheingAllowed(
Fcb, SrvOpen));
4714 ContextReferenced =
TRUE;
4717 ASSERT(!ResourceOwnerSet);
4718 RxWriteReleaseResources(RxContext, ResourceOwnerSet);
4721 ASSERT(RxContext->AcquireReleaseFcbTrackerX == 0);
4756 if (ExtendingValidData)
4760 LastOffset =
ByteOffset.QuadPart +
Irp->IoStatus.Information;
4766 Fcb->
Header.ValidDataLength.QuadPart = LastOffset;
4789 Fcb->
Header.ValidDataLength.QuadPart = InitialValidDataLength;
4800 if (UnwindOutstandingAsync)
4814 RxWriteReleaseResources(RxContext, ResourceOwnerSet);
4818 if (ContextReferenced)
4835 ASSERT(
Irp->IoStatus.Information <=
Stack->Parameters.Write.Length);
4847#undef _SEH2_TRY_RETURN
4864#define BugCheckFileId RDBSS_BUG_CHECK_CACHESUP
4868 Irp = RxContext->CurrentIrp;
4869 Stack = RxContext->CurrentIrpSp;
4873 switch (RxContext->MajorFunction)
4891 DPRINT1(
"Invalid major for RxCompleteMdl: %d\n", RxContext->MajorFunction);
4902#undef BugCheckFileId
4916 PLONG LengthRemaining,
4921 USHORT PrefixLength, NameLength, ToCopy;
4933 PrefixLength = ((
PNET_ROOT)
Fcb->pNetRoot)->PrefixEntry.Prefix.Length;
4954 PrefixLength -=
sizeof(
WCHAR);
4955 }
while (PrefixLength > 0 &&
Prefix[0] !=
L'\\');
4962 NameLength +=
sizeof(
WCHAR);
4974 NameLength -=
sizeof(
WCHAR);
4980 if (*LengthRemaining >= PrefixLength)
4983 ToCopy = PrefixLength;
4984 *LengthRemaining = *LengthRemaining - PrefixLength;
4989 ToCopy = *LengthRemaining;
4991 *LengthRemaining = -1;
5007 ToCopy =
sizeof(
WCHAR);
5013 *ActualNameLength = ToCopy + PrefixLength;
5015 if (*LengthRemaining != -1)
5018 if (*LengthRemaining > ToCopy)
5020 *LengthRemaining = *LengthRemaining - ToCopy;
5025 ToCopy = *LengthRemaining;
5026 *LengthRemaining = -1;
5049 Irp = RxContext->CurrentIrp;
5050 Stack = RxContext->CurrentIrpSp;
5052 SecurityContext =
Stack->Parameters.Create.SecurityContext;
5054 RxContext->Create.NtCreateParameters.SecurityContext = SecurityContext;
5058 DPRINT(
"SD Ctxt: %p, Length: %lx\n", RxContext->Create.NtCreateParameters.SecurityContext,
5059 RxContext->Create.SdLength);
5069 RxContext->Create.NtCreateParameters.DesiredAccess = SecurityContext->
DesiredAccess;
5071 RxContext->Create.NtCreateParameters.AllocationSize.QuadPart =
Irp->Overlay.AllocationSize.QuadPart;
5074 RxContext->Create.NtCreateParameters.Disposition = (
Stack->Parameters.Create.Options >> 24) & 0x000000FF;
5075 RxContext->Create.NtCreateParameters.CreateOptions =
Stack->Parameters.Create.Options & 0xFFFFFF;
5079 RxContext->Create.NtCreateParameters.DfsContext = DfsContext;
5080 RxContext->Create.NtCreateParameters.DfsNameContext = DfsNameContext;
5092 RxContext->pFcb =
NULL;
5093 RxContext->Create.ReturnedCreateInformation = 0;
5101 RxContext->Create.EaLength =
Stack->Parameters.Create.EaLength;
5102 if (RxContext->Create.EaLength == 0)
5104 RxContext->Create.EaBuffer =
NULL;
5108 RxContext->Create.EaBuffer =
Irp->AssociatedIrp.SystemBuffer;
5109 DPRINT(
"EA Buffer: %p, Length: %lx\n",
Irp->AssociatedIrp.SystemBuffer, RxContext->Create.EaLength);
5135 if (
Context->RxDeviceObject != NetRoot->pSrvCall->RxDeviceObject)
5167 DPRINT(
"Opening target directory\n");
5286 FALSE,
"second check per useropens",
5289 ++SrvOpen->UncleanFobxCount;
5315 ++
Fcb->UncachedUncleanCount;
5328 ++SrvOpen->UncleanFobxCount;
5329 ++SrvOpen->OpenCount;
5383 if (
Context->Create.FcbAcquired)
5389 if (!
Context->Create.FcbAcquired)
5421 Stack = RxContext->CurrentIrpSp;
5424 RtlInitEmptyUnicodeString(&CanonicalName,
NULL, 0);
5434 RxContext->Create.ThisIsATreeConnectOpen =
TRUE;
5435 RxContext->Create.TreeConnectOpenDeferred =
FALSE;
5436 RtlInitEmptyUnicodeString(&RxContext->Create.TransportName,
NULL, 0);
5437 RtlInitEmptyUnicodeString(&RxContext->Create.UserName,
NULL, 0);
5438 RtlInitEmptyUnicodeString(&RxContext->Create.Password,
NULL, 0);
5439 RtlInitEmptyUnicodeString(&RxContext->Create.UserDomainName,
NULL, 0);
5442 if (
Stack->Parameters.Create.EaLength > 0)
5464 RxContext->Create.pNetRoot->pSrvCall->RxDeviceObject->Dispatch,
5473 VNetRoot = (
PV_NET_ROOT)RxContext->Create.pVNetRoot;
5484 ++VNetRoot->NumberOfOpens;
5487 RxContext->Create.pSrvCall =
NULL;
5488 RxContext->Create.pNetRoot =
NULL;
5489 RxContext->Create.pVNetRoot =
NULL;
5648 DPRINT1(
"Not a file, FastIO not possible!\n");
5654 DPRINT1(
"File delete pending\n");
5661 DPRINT1(
"Write operations to be completed\n");
5669 DPRINT1(
"SRV_OPEN orphaned\n");
5684 DPRINT1(
"Buffering change pending\n");
5692 DPRINT1(
"File renamed/deleted\n");
5709 DPRINT1(
"Read caching disabled\n");
5721 DPRINT1(
"FsRtlFastCheckLockForRead failed\n");
5731 DPRINT1(
"Write caching disabled\n");
5743 DPRINT1(
"FsRtlFastCheckLockForWrite failed\n");
5878 BOOLEAN TableAcquired, AcquiredExclusive;
5887 AcquiredExclusive =
FALSE;
5890 TableAcquired =
TRUE;
5897 DPRINT(
"RxFcbTableLookupFcb returned NULL fcb for %wZ\n", NetRootName);
5903 if (
Fcb->fShouldBeOrphaned)
5909 TableAcquired =
TRUE;
5910 AcquiredExclusive =
TRUE;
5930 if (!AcquiredExclusive)
5934 TableAcquired =
TRUE;
5970 TableAcquired =
FALSE;
5999 if (!RxContext->
Create.FcbAcquired)
6018 BOOLEAN UncName, PrependString, IsSpecial;
6021 WCHAR SessionIdBuffer[16];
6026 PrependString =
FALSE;
6038 CanonicalLength =
FileName->Length;
6058 PWSTR FirstSlash, EndOfString;
6065 RtlInitEmptyUnicodeString(&SessionIdString, SessionIdBuffer,
sizeof(SessionIdBuffer));
6069 for (FirstSlash = &
FileName->Buffer[1]; FirstSlash != EndOfString; ++FirstSlash)
6077 if (EndOfString - FirstSlash <= 1)
6084 DPRINT1(
"WARNING: Assuming not special + disk!\n");
6093 *NetRootType =
Type;
6106 PrependString =
TRUE;
6107 CanonicalLength += SessionIdString.
Length + 3 *
sizeof(
WCHAR);
6112 if (!PrependString && !IsSpecial &&
FileName->Buffer[0] !=
'\\')
6136 CanonicalName->
Buffer[0] =
'\\';
6137 CanonicalName->
Buffer[1] =
';';
6138 CanonicalName->
Buffer[2] =
':';
6143 DPRINT1(
"CanonicalName: %wZ\n", CanonicalName);
6191 BOOLEAN TopLevel, Closing, PassToDriver, SetCancelRoutine, PostRequest, CanWait;
6195 DPRINT(
"RxFsdCommonDispatch(%p, %d, %p, %p, %p, %p)\n", DispatchVector,
MajorFunction,
Stack,
FileObject,
Irp, RxDeviceObject);
6205 PostRequest =
FALSE;
6206 SetCancelRoutine =
TRUE;
6242 SetCancelRoutine =
FALSE;
6251 PassToDriver =
TRUE;
6256 PassToDriver =
FALSE;
6265 PassToDriver =
FALSE;
6272 StackFileObject =
Stack->FileObject;
6274 if (StackFileObject !=
NULL && StackFileObject->FsContext !=
NULL)
6283 Fcb = StackFileObject->FsContext;
6284 Fobx = StackFileObject->FsContext2;
6291 PassToDriver =
TRUE;
6295 PassToDriver =
FALSE;
6297 DPRINT1(
"Operation on orphaned FCB: %p\n",
Fcb);
6308 Fcb = StackFileObject->FsContext;
6310 DPRINT1(
"Close received after stop\n");
6311 DPRINT1(
"Irp: %p %d:%d FO: %p FCB: %p\n",
6317 DPRINT1(
"OpenCount: %ld, UncleanCount: %ld, Name: %wZ\n",
6329 Irp->IoStatus.Information = 0;
6336 Irp->IoStatus.Information = 0;
6353 if (SetCancelRoutine)
6368 Irp->IoStatus.Information = 0;
6393 if (IoGetRemainingStackSize() < 0xE00)
6410 Context->ResumeRoutine = DispatchFunc;
6412 if (DispatchFunc !=
NULL)
6482 DPRINT(
"RxFsdDispatch(%p, %p)\n", RxDeviceObject,
Irp);
6497 Irp->IoStatus.Information = 0;
6513 Irp->IoStatus.Information = 0;
6534 Irp->IoStatus.Information = 0;
6557 DPRINT(
"Posting MN: %d, Ctxt: %p, IRP: %p, Thrd: %lx #%lx\n",
6558 RxContext->MinorFunction, RxContext,
6559 RxContext->CurrentIrp, RxContext->LastExecutionThread,
6560 RxContext->SerialNumber);
6662 if (VolumeDO !=
NULL)
6670 }
while (RxContext !=
NULL);
6737 DPRINT(
"InitialDebugString read from registry: '%s'\n", OutString.
Buffer);
6803 OutString->Length = 0;
6804 OutString->Buffer = 0;
6817 OutString->MaximumLength = OutString->Length;
7014 NextEntry = NextEntry->
Flink)
7021 if (ListContext == TopLevelContext)
7051 for (
Entry =
Fcb->SrvOpenList.Flink;
7060 if (SrvOpen->UncleanFobxCount != 0 ||
7120 return (TopLevelIrp ==
Irp);
7150 if (OriginatorId ==
NULL || OriginatorId->Length == 0)
7195 DPRINT(
"RxLowIoIoCtlShellCompletion(%p)\n", RxContext);
7250 DPRINT(
"RxLowIoReadShell(%p)\n", RxContext);
7266 DPRINT(
"RxLowIoReadShell(%p), Status: %lx\n", RxContext,
Status);
7285 DPRINT(
"RxLowIoReadShellCompletion(%p)\n", RxContext);
7376 ASSERT(
Irp->IoStatus.Information <=
Stack->Parameters.Read.Length);
7394 DPRINT(
"RxLowIoWriteShell(%p)\n", RxContext);
7409 DPRINT(
"RxLowIoWriteShell(%p), Status: %lx\n", RxContext,
Status);
7427 DPRINT(
"RxLowIoWriteShellCompletion(%p)\n", RxContext);
7490 Irp->IoStatus.Information;
7498 Fcb->
Header.ValidDataLength.QuadPart = LastOffset;
7507 if (NonPagedFcb !=
NULL)
7527 &((
PFOBX)RxContext->
pFobx)->Specific.NamedPipe.WriteSerializationQueue);
7661 if (RxContext->
Create.FcbAcquired)
7683 DPRINT(
"RxContext: %p prepared for reuse\n", RxContext);
7701 RxContext->
Info.FileInformationClass = FileInfoClass;
7724 Irp = RxContext->CurrentIrp;
7737 QueryRequest = RxContext->CurrentIrpSp->Parameters.DeviceIoControl.Type3InputBuffer;
7750 if (RxContext->PrefixClaim.SuppliedPathName.Buffer ==
NULL)
7758 RxContext->PrefixClaim.SuppliedPathName.Length = QueryRequest->
PathNameLength;
7759 RxContext->PrefixClaim.SuppliedPathName.MaximumLength = QueryRequest->
PathNameLength;
7764 RxContext->Create.ThisIsATreeConnectOpen =
TRUE;
7765 RxContext->Create.NtCreateParameters.SecurityContext = QueryRequest->
SecurityContext;
7771 ASSERT(RxContext->PrefixClaim.SuppliedPathName.Buffer !=
NULL);
7776 RtlInitEmptyUnicodeString(&CanonicalName,
NULL, 0);
7777 FileName.Length = RxContext->PrefixClaim.SuppliedPathName.Length;
7778 FileName.MaximumLength = RxContext->PrefixClaim.SuppliedPathName.MaximumLength;
7779 FileName.Buffer = RxContext->PrefixClaim.SuppliedPathName.Buffer;
7780 NetRootName.
Length = RxContext->PrefixClaim.SuppliedPathName.Length;
7781 NetRootName.
MaximumLength = RxContext->PrefixClaim.SuppliedPathName.MaximumLength;
7782 NetRootName.
Buffer = RxContext->PrefixClaim.SuppliedPathName.Buffer;
7799 QueryResponse = RxContext->CurrentIrpSp->Parameters.DeviceIoControl.Type3InputBuffer;
7800 QueryResponse->
LengthAccepted = RxContext->PrefixClaim.SuppliedPathName.Length - NetRootName.
Length;
7807 if (RxContext->PrefixClaim.SuppliedPathName.Buffer !=
NULL)
7809 RxFreePoolWithTag(RxContext->PrefixClaim.SuppliedPathName.Buffer,
RX_MISC_POOLTAG);
7827 BOOLEAN SymbolicLinkEmbeddedInOldPath,
7837 *ReparseRequired =
FALSE;
7846 if (!SymbolicLinkEmbeddedInOldPath)
7859 *ReparseRequired =
TRUE;
7862 if (!NewPathIsAbsolute)
7868 if (NewBuffer ==
NULL)
7882 NewBuffer = NewPath->
Buffer;
7972 RxContext->
Info.FileInformationClass =
Class;
8032 DPRINT(
"RxQueryBasicInfo(%p, %p)\n", RxContext, BasicInfo);
8068 DPRINT(
"RxQueryDirectory(%p)\n", RxContext);
8074 FileInfoClass =
Stack->Parameters.QueryDirectory.FileInformationClass;
8075 DPRINT(
"Wait: %d, Length: %ld, FileName: %p, Class: %d\n",
8081 FileIndex =
Stack->Parameters.QueryDirectory.FileIndex;
8082 DPRINT(
"Index: %d, Buffer: %p, Flags: %x\n", FileIndex,
Irp->UserBuffer,
Flags);
8100 DPRINT1(
"Not a disk! %x\n",
Fcb->pNetRoot->Type);
8118 LockNotGranted =
TRUE;
8129 if (Fobx->UnicodeQueryTemplate.Buffer !=
NULL)
8135 LockNotGranted =
FALSE;
8148 LockNotGranted =
FALSE;
8190 if (Fobx->UnicodeQueryTemplate.Buffer !=
NULL)
8200 Fobx->UnicodeQueryTemplate.Length =
FileName->Length;
8201 Fobx->UnicodeQueryTemplate.MaximumLength =
FileName->Length;
8218 Fobx->UnicodeQueryTemplate.Length =
sizeof(
WCHAR);
8219 Fobx->UnicodeQueryTemplate.MaximumLength =
sizeof(
WCHAR);
8235 RxContext->
Info.FileInformationClass = FileInfoClass;
8239 if (RxContext->
Info.Buffer !=
NULL)
8251 Irp->IoStatus.Information =
Length - RxContext->
Info.LengthRemaining;
8294 DPRINT(
"RxQueryNameInfo(%p, %p)\n", RxContext, NameInfo);
8299 DPRINT1(
"Buffer too small: %d\n", RxContext->
Info.LengthRemaining);
8300 RxContext->
Info.Length = 0;
8315 if (RxContext->
Info.LengthRemaining < 0)
8317 DPRINT1(
"Buffer too small!\n");
8318 RxContext->
Info.Length = 0;
8324 RxContext->
Info.LengthRemaining >=
sizeof(
WCHAR))
8328 RxContext->
Info.LengthRemaining -=
sizeof(
WCHAR);
8368 DPRINT(
"RxQueryStandardInfo(%p, %p)\n", RxContext, StandardInfo);
8451 if (Granularity > 16)
8517 RDBSSDevice->
Dispatch = MrdrDispatch;
8548 ScavengerTimeLimit.
QuadPart = MrdrDispatch->ScavengerTimeout * 10000000LL;
8687 BOOLEAN ShouldTry, Purged, Scavenged;
8747 if (
Fcb->pNetRoot != RxContext->
Create.pNetRoot ||
8758 for (ListEntry =
Fcb->SrvOpenList.Flink;
8759 ListEntry != &
Fcb->SrvOpenList;
8760 ListEntry = ListEntry->
Flink)
8766 if (SrvOpen->pVNetRoot != RxContext->
Create.pVNetRoot)
8768 RxContext->
Create.TryForScavengingOnSharingViolation =
TRUE;
8776 if (SrvOpen->pVNetRoot != RxContext->
Create.pVNetRoot)
8778 RxContext->
Create.TryForScavengingOnSharingViolation =
TRUE;
8811 DPRINT(
"Delayed close successfull, reusing %p\n", SrvOpen);
8825 if (ListEntry == &
Fcb->SrvOpenList)
8856 RxContext->
Create.TryForScavengingOnSharingViolation =
TRUE;
8882#define FILE_ATTRIBUTE_VOLUME 0x8
8883#define VALID_FILE_ATTRIBUTES ( \
8884 FILE_ATTRIBUTE_READONLY | FILE_ATTRIBUTE_HIDDEN | \
8885 FILE_ATTRIBUTE_SYSTEM | FILE_ATTRIBUTE_VOLUME | \
8886 FILE_ATTRIBUTE_ARCHIVE | FILE_ATTRIBUTE_DEVICE | \
8887 FILE_ATTRIBUTE_TEMPORARY | FILE_ATTRIBUTE_SPARSE_FILE | \
8888 FILE_ATTRIBUTE_REPARSE_POINT | FILE_ATTRIBUTE_COMPRESSED | \
8889 FILE_ATTRIBUTE_OFFLINE | FILE_ATTRIBUTE_NOT_CONTENT_INDEXED | \
8890 FILE_ATTRIBUTE_ENCRYPTED | FILE_ATTRIBUTE_INTEGRITY_STREAM)
8891#define VALID_DIR_ATTRIBUTES (VALID_FILE_ATTRIBUTES | FILE_ATTRIBUTE_DIRECTORY)
8908 BasicInfo =
Irp->AssociatedIrp.SystemBuffer;
8938 Fcb->Attributes = CleanAttr;
9056 DPRINT(
"RxSetRenameInfo(%p)\n", RxContext);
9059 DPRINT(
"FO: %p, Replace: %d\n",
Stack->Parameters.SetFile.FileObject,
Stack->Parameters.SetFile.ReplaceIfExists);
9062 RxContext->
Info.ReplaceIfExists =
Stack->Parameters.SetFile.ReplaceIfExists;
9063 if (
Stack->Parameters.SetFile.FileObject ==
NULL)
9072 if (
Fcb->pNetRoot != RenameFcb->pNetRoot)
9074 DPRINT1(
"Not the same device: %p:%p (%wZ) - %p:%p (%wZ)\n",
Fcb,
Fcb->pNetRoot,
Fcb->pNetRoot->pNetRootName, RenameFcb, RenameFcb->pNetRoot, RenameFcb->pNetRoot->pNetRootName);
9081 if (RenameInfo ==
NULL)
9096 RxContext->
Info.FileInformationClass =
Stack->Parameters.SetFile.FileInformationClass;
9097 RxContext->
Info.Buffer = RenameInfo;
9106 RxFreePoolWithTag(RenameInfo,
'??xR');
9197 Fobx->AssociatedFileObject =
NULL;
9215 if (
Stack->Parameters.Create.SecurityContext !=
NULL)
9266 AlreadyStarted =
FALSE;
9273 AlreadyStarted =
TRUE;
9311 if (!AlreadyStarted)
9366 if (TopLevelContext ==
NULL)
9369 if (TopLevelContext ==
NULL)
9474 DPRINT(
"RxUnwindTopLevelIrp(%p)\n", TopLevelContext);
9477 if (TopLevelContext ==
NULL)
9480 if (TopLevelContext ==
NULL)
9498 RxFreePoolWithTag(TopLevelContext, RX_TLC_POOLTAG);
9585 if ((
Context->LowIoContext.ParamsFor.FsCtl.InputBufferLength > 0 &&
Context->LowIoContext.ParamsFor.FsCtl.pInputBuffer ==
NULL) ||
9586 (
Context->LowIoContext.ParamsFor.FsCtl.OutputBufferLength > 0 &&
Context->LowIoContext.ParamsFor.FsCtl.pOutputBuffer ==
NULL))
9592 DPRINT(
"Calling: %p\n",
Context->RxDeviceObject->Dispatch->MRxDevFcbXXXControlFile);
9596 Context->CurrentIrp->IoStatus.Information =
Context->InformationToReturn;
9599 DPRINT(
"RxXXXControlFileCallthru: %x, %ld\n",
Context->CurrentIrp->IoStatus.Status,
Context->CurrentIrp->IoStatus.Information);
BOOLEAN NTAPI MmForceSectionClosed(IN PSECTION_OBJECT_POINTERS SectionObjectPointer, IN BOOLEAN DelayClose)
static PIO_STACK_LOCATION IoGetCurrentIrpStackLocation(PIRP Irp)
static USHORT USHORT * NewLength
static NDIS_HANDLE DriverHandle
ACPI_BUFFER *RetBuffer ACPI_BUFFER *RetBuffer char ACPI_WALK_RESOURCE_CALLBACK void *Context ACPI_BUFFER *RetBuffer UINT16 ACPI_RESOURCE **ResourcePtr ACPI_GENERIC_ADDRESS *Reg UINT32 *ReturnValue UINT8 UINT8 *Slp_TypB ACPI_PHYSICAL_ADDRESS PhysicalAddress64 UINT32 UINT32 *TimeElapsed UINT32 LineNumber
#define OBJ_NAME_PATH_SEPARATOR
#define InterlockedIncrement
#define InterlockedDecrement
#define FILE_DIRECTORY_FILE
#define FILE_NON_DIRECTORY_FILE
#define FILE_DELETE_ON_CLOSE
VOID RxPurgeChangeBufferingStateRequestsForSrvOpen(_In_ PSRV_OPEN SrvOpen)
VOID RxCompleteSrvOpenKeyAssociation(_Inout_ PSRV_OPEN SrvOpen)
NTSTATUS RxPurgeFcbInSystemCache(_In_ PFCB Fcb, _In_ PLARGE_INTEGER FileOffset OPTIONAL, _In_ ULONG Length, _In_ BOOLEAN UninitializeCacheMaps, _In_ BOOLEAN FlushFile)
NTSTATUS RxFlushFcbInSystemCache(_In_ PFCB Fcb, _In_ BOOLEAN SynchronizeWithLazyWriter)
VOID RxpProcessChangeBufferingStateRequests(PSRV_CALL SrvCall, BOOLEAN UpdateHandlerState)
VOID RxInitiateSrvOpenKeyAssociation(_Inout_ PSRV_OPEN SrvOpen)
VOID NTAPI CcPrepareMdlWrite(IN PFILE_OBJECT FileObject, IN PLARGE_INTEGER FileOffset, IN ULONG Length, OUT PMDL *MdlChain, OUT PIO_STATUS_BLOCK IoStatus)
VOID NTAPI CcMdlReadComplete(IN PFILE_OBJECT FileObject, IN PMDL MdlChain)
VOID NTAPI CcMdlRead(IN PFILE_OBJECT FileObject, IN PLARGE_INTEGER FileOffset, IN ULONG Length, OUT PMDL *MdlChain, OUT PIO_STATUS_BLOCK IoStatus)
VOID NTAPI CcMdlWriteComplete(IN PFILE_OBJECT FileObject, IN PLARGE_INTEGER FileOffset, IN PMDL MdlChain)
VOID NTAPI CcSetReadAheadGranularity(IN PFILE_OBJECT FileObject, IN ULONG Granularity)
VOID NTAPI CcFlushCache(IN PSECTION_OBJECT_POINTERS SectionObjectPointer, IN OPTIONAL PLARGE_INTEGER FileOffset, IN ULONG Length, OUT OPTIONAL PIO_STATUS_BLOCK IoStatus)
#define CcGetFileSizePointer(FO)
#define CcIsFileCached(FO)
_In_ PFCB _In_ LONGLONG FileOffset
_Inout_ PFCB _Inout_ PUNICODE_STRING RemainingName
IN PUNICODE_STRING IN POBJECT_ATTRIBUTES ObjectAttributes
#define STATUS_INVALID_HANDLE
#define STATUS_NOT_IMPLEMENTED
#define STATUS_OBJECT_TYPE_MISMATCH
#define DFS_DOWNLEVEL_OPEN_CONTEXT
#define DFS_USER_NAME_CONTEXT
#define DFS_CSCAGENT_NAME_CONTEXT
#define NT_SUCCESS(StatCode)
#define Assert(cond, msg)
static const WCHAR Message[]
_In_ PIO_STACK_LOCATION IrpSp
_In_ PIO_STACK_LOCATION _Inout_ PFILE_OBJECT _Inout_ PVCB _Outptr_result_maybenull_ PDCB _In_ PDCB _In_ PDIRENT _In_ ULONG _In_ ULONG _In_ PUNICODE_STRING _In_ PACCESS_MASK _In_ USHORT ShareAccess
#define RemoveEntryList(Entry)
#define InsertTailList(ListHead, Entry)
UNICODE_STRING * PUNICODE_STRING
#define ExAllocatePoolWithTag(hernya, size, tag)
#define IsListEmpty(ListHead)
#define PsGetCurrentThread()
NTSTATUS ExInitializeResourceLite(PULONG res)
#define KeWaitForSingleObject(pEvt, foo, a, b, c)
#define RtlCompareMemory(s1, s2, l)
#define KeInitializeEvent(pEvt, foo, foo2)
#define KeReleaseSpinLock(sl, irql)
#define KeSetEvent(pEvt, foo, foo2)
#define KeAcquireSpinLock(sl, irql)
#define KeQuerySystemTime(t)
#define KeGetCurrentIrql()
#define ExAcquireResourceExclusiveLite(res, wait)
#define RemoveHeadList(ListHead)
#define InitializeListHead(ListHead)
#define ExAcquireResourceSharedLite(res, wait)
#define KeInitializeSpinLock(sl)
VOID NTAPI KeClearEvent(IN PKEVENT Event)
#define ClearFlag(_F, _SF)
#define FILE_WRITE_TO_END_OF_FILE
#define BooleanFlagOn(F, SF)
IN PLARGE_INTEGER IN ULONG IN BOOLEAN IN ULONG LockKey
IN PFCB IN PCCB IN TYPE_OF_OPEN IN BOOLEAN IN BOOLEAN TopLevel
IN PLARGE_INTEGER IN ULONG IN BOOLEAN IN ULONG IN BOOLEAN CheckForReadOperation
IN PDCB IN PCCB IN VBO IN OUT PULONG OUT PDIRENT OUT PBCB OUT PVBO ByteOffset
#define FCB_STATE_TEMPORARY
#define FCB_STATE_DELETE_ON_CLOSE
#define FCB_STATE_TRUNCATE_ON_CLOSE
#define FCB_STATE_PAGING_FILE
#define FCB_STATE_DELAY_CLOSE
#define FCB_STATE_WRITECACHING_ENABLED
VOID RxGetFileSizeWithLock(_In_ PFCB Fcb, _Out_ PLONGLONG FileSize)
#define FCB_STATE_FILE_IS_BUF_COMPRESSED
VOID RxSetFileSizeWithLock(_Inout_ PFCB Fcb, _In_ PLONGLONG FileSize)
#define RxDereferenceSrvOpen(SrvOpen, LockHoldingState)
#define FCB_STATE_FILESIZECACHEING_ENABLED
#define RxWaitForStableNetFcb(F, R)
#define RxReferenceVNetRoot(VNetRoot)
#define RxDereferenceNetFcb(Fcb)
#define RxTransitionNetFcb(F, C)
#define FCB_STATE_FILE_IS_DISK_COMPRESSED
#define RxTransitionSrvOpen(S, C)
#define FOBX_FLAG_MARKED_AS_DORMANT
#define FOBX_FLAG_USER_SET_LAST_CHANGE
#define SRVOPEN_FLAG_SHAREACCESS_UPDATED
#define FCB_STATE_READCACHING_ENABLED
#define FCB_STATE_ORPHANED
struct _V_NET_ROOT * PV_NET_ROOT
#define FOBX_FLAG_DELETE_ON_CLOSE
PSRV_OPEN RxCreateSrvOpen(_In_ PV_NET_ROOT VNetRoot, _In_ OUT PFCB Fcb)
#define FOBX_FLAG_USER_SET_LAST_WRITE
#define FOBX_FLAG_MATCH_ALL
#define RxReferenceNetFcb(Fcb)
struct _SRV_OPEN * PSRV_OPEN
#define FOBX_FLAG_UNC_NAME
#define RxDereferenceAndFinalizeNetFcb(Fcb, RxContext, RecursiveFinalize, ForceFinalize)
PFCB RxCreateNetFcb(_In_ PRX_CONTEXT RxContext, _In_ PV_NET_ROOT VNetRoot, _In_ PUNICODE_STRING Name)
#define FOBX_FLAG_USER_SET_LAST_ACCESS
struct _NET_ROOT * PNET_ROOT
#define RxReferenceSrvOpen(SrvOpen)
#define FOBX_FLAG_FREE_UNICODE
#define FOBX_FLAG_USER_SET_CREATION
#define FCB_STATE_ADDEDBACKSLASH
VOID RxRemoveNameNetFcb(_Out_ PFCB ThisFcb)
#define FCB_STATE_COLLAPSING_ENABLED
#define FOBX_FLAG_SRVOPEN_CLOSED
#define FCB_STATE_FILE_IS_SHADOWED
#define RxWaitForStableSrvOpen(S, R)
#define RxReferenceSrvCall(SrvCall)
#define RxDereferenceNetFobx(Fobx, LockHoldingState)
#define RxDereferenceVNetRoot(VNetRoot, LockHoldingState)
#define FCB_STATE_READAHEAD_DEFERRED
#define RxAcquireFcbTableLockShared(T, W)
#define RxAcquireFcbTableLockExclusive(T, W)
PFCB RxFcbTableLookupFcb(_In_ PRX_FCB_TABLE FcbTable, _In_ PUNICODE_STRING Path)
#define RxReleaseFcbTableLock(T)
struct _FileName FileName
BOOLEAN NTAPI FsRtlFastCheckLockForWrite(IN PFILE_LOCK FileLock, IN PLARGE_INTEGER FileOffset, IN PLARGE_INTEGER Length, IN ULONG Key, IN PFILE_OBJECT FileObject, IN PVOID Process)
BOOLEAN NTAPI FsRtlCheckLockForWriteAccess(IN PFILE_LOCK FileLock, IN PIRP Irp)
NTSTATUS NTAPI FsRtlFastUnlockAll(IN PFILE_LOCK FileLock, IN PFILE_OBJECT FileObject, IN PEPROCESS Process, IN PVOID Context OPTIONAL)
BOOLEAN NTAPI FsRtlFastCheckLockForRead(IN PFILE_LOCK FileLock, IN PLARGE_INTEGER FileOffset, IN PLARGE_INTEGER Length, IN ULONG Key, IN PFILE_OBJECT FileObject, IN PVOID Process)
BOOLEAN NTAPI FsRtlCheckLockForReadAccess(IN PFILE_LOCK FileLock, IN PIRP Irp)
_Inout_ PLIST_ENTRY _In_ PVOID _In_ PSTRING _In_ BOOLEAN _In_ BOOLEAN _In_ ULONG _In_ PFLT_CALLBACK_DATA _In_opt_ PCHECK_FOR_TRAVERSE_ACCESS _In_opt_ PSECURITY_SUBJECT_CONTEXT SubjectContext
_Must_inspect_result_ _In_ PFILE_OBJECT _In_ ULONG _In_opt_ GUID _In_ USHORT DataBufferLength
@ FilePositionInformation
@ FileMoveClusterInformation
@ FilePipeLocalInformation
@ FileEndOfFileInformation
@ FileCompressionInformation
@ FilePipeRemoteInformation
@ FileInternalInformation
@ FileAlternateNameInformation
@ FileValidDataLengthInformation
@ FileAllocationInformation
@ FileDispositionInformation
@ FileShortNameInformation
enum _FILE_INFORMATION_CLASS FILE_INFORMATION_CLASS
#define FILE_OVERWRITE_IF
#define FILE_OPEN_REPARSE_POINT
#define FILE_NO_INTERMEDIATE_BUFFERING
#define FILE_OPEN_REMOTE_INSTANCE
#define FILE_CREATE_TREE_CONNECTION
#define FILE_OPEN_FOR_BACKUP_INTENT
#define FsRtlEnterFileSystem
#define FsRtlExitFileSystem
_Must_inspect_result_ _Out_ PLARGE_INTEGER FileSize
#define FSRTL_FSP_TOP_LEVEL_IRP
#define FSRTL_FLAG_USER_MAPPED_FILE
#define FSRTL_FAST_IO_TOP_LEVEL_IRP
VOID NTAPI CcSetFileSizes(IN PFILE_OBJECT FileObject, IN PCC_FILE_SIZES FileSizes)
VOID NTAPI CcInitializeCacheMap(IN PFILE_OBJECT FileObject, IN PCC_FILE_SIZES FileSizes, IN BOOLEAN PinAccess, IN PCACHE_MANAGER_CALLBACKS Callbacks, IN PVOID LazyWriteContext)
BOOLEAN NTAPI CcUninitializeCacheMap(IN PFILE_OBJECT FileObject, IN OPTIONAL PLARGE_INTEGER TruncateSize, IN OPTIONAL PCACHE_UNINITIALIZE_EVENT UninitializeEvent)
BOOLEAN NTAPI CcPurgeCacheSection(IN PSECTION_OBJECT_POINTERS SectionObjectPointer, IN OPTIONAL PLARGE_INTEGER FileOffset, IN ULONG Length, IN BOOLEAN UninitializeCacheMaps)
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
VOID FASTCALL ExAcquireFastMutex(IN PFAST_MUTEX FastMutex)
VOID FASTCALL ExReleaseFastMutex(IN PFAST_MUTEX FastMutex)
#define OBJ_CASE_INSENSITIVE
NTSYSAPI ULONG WINAPI RtlLengthSecurityDescriptor(PSECURITY_DESCRIPTOR)
ULONG NTAPI ExInterlockedAddUlong(IN OUT PULONG Addend, IN ULONG Increment, IN OUT PKSPIN_LOCK Lock)
#define InterlockedExchangeAdd
#define InterlockedCompareExchange
#define Add2Ptr(PTR, INC)
IoSetCancelRoutine(Irp, CancelRoutine)
VOID NTAPI CcSetAdditionalCacheAttributes(IN PFILE_OBJECT FileObject, IN BOOLEAN DisableReadAhead, IN BOOLEAN DisableWriteBehind)
VOID NTAPI ExInitializeNPagedLookasideList(IN PNPAGED_LOOKASIDE_LIST Lookaside, IN PALLOCATE_FUNCTION Allocate OPTIONAL, IN PFREE_FUNCTION Free OPTIONAL, IN ULONG Flags, IN SIZE_T Size, IN ULONG Tag, IN USHORT Depth)
NTSTATUS NTAPI RxLowIoPopulateFsctlInfo(_In_ PRX_CONTEXT RxContext)
FAST_MUTEX RxLowIoPagingIoSyncMutex
NTSTATUS NTAPI RxLowIoSubmit(_In_ PRX_CONTEXT RxContext, _In_ PLOWIO_COMPLETION_ROUTINE CompletionRoutine)
VOID NTAPI RxInitializeLowIoContext(_Out_ PLOWIO_CONTEXT LowIoContext, _In_ ULONG Operation)
#define RxLowIoIsBufferLocked(LowIoContext)
#define ExFreePoolWithTag(_P, _T)
#define FILE_STANDARD_INFORMATION
#define InitializeObjectAttributes(p, n, a, r, s)
enum _RX_BLOCK_CONDITION RX_BLOCK_CONDITION
#define LOWIO_CONTEXT_FLAG_SAVEUNLOCKS
#define LOWIO_READWRITEFLAG_EXTENDING_VDL
#define LOWIO_READWRITEFLAG_EXTENDING_FILESIZE
@ LOWIO_OP_NOTIFY_CHANGE_DIRECTORY
@ LOWIO_OP_UNLOCK_MULTIPLE
#define RX_REGISTERMINI_FLAG_DONT_PROVIDE_MAILSLOTS
#define RxSetIoStatusStatus(R, S)
#define LOWIO_CONTEXT_FLAG_SYNCCALL
#define RDBSS_NO_DEFERRED_CACHE_READAHEAD
#define RX_REGISTERMINI_FLAG_DONT_INIT_DRIVER_DISPATCH
#define StableCondition(X)
#define RX_REGISTERMINI_FLAG_DONT_PROVIDE_UNCS
#define LOWIO_CONTEXT_FLAG_LOUDOPS
#define RX_REGISTERMINI_FLAG_DONT_INIT_PREFIX_N_SCAVENGER
#define RxSetIoStatusInfo(R, I)
#define FOBX_FLAG_DFS_OPEN
struct _MRX_SRV_OPEN_ * PMRX_SRV_OPEN
#define SRVOPEN_FLAG_NO_BUFFERING_STATE_CHANGE
struct _MRX_FOBX_ * PMRX_FOBX
#define SRVOPEN_FLAG_COLLAPSING_DISABLED
#define SRVOPEN_FLAG_BUFFERING_STATE_CHANGE_PENDING
#define SRVOPEN_FLAG_DONTUSE_WRITE_CACHING
#define SRVOPEN_FLAG_FILE_DELETED
#define FOBX_FLAG_BAD_HANDLE
struct _MRX_V_NET_ROOT_ * PMRX_V_NET_ROOT
#define SRVOPEN_FLAG_DONTUSE_READ_CACHING
#define SRVOPEN_FLAG_CLOSED
#define NETROOT_FLAG_DFS_AWARE_NETROOT
#define SRVCALL_FLAG_DFS_AWARE_SERVER
#define SRVOPEN_FLAG_CLOSE_DELAYED
#define SRVOPEN_FLAG_ORPHANED
#define SRVOPEN_FLAG_FILE_RENAMED
__in UCHAR __in POWER_STATE __in_opt PVOID __in PIO_STATUS_BLOCK IoStatus
_Must_inspect_result_ _Out_ PNDIS_STATUS _In_ NDIS_HANDLE _In_ ULONG _Out_ PNDIS_STRING _Out_ PNDIS_HANDLE KeyHandle
_In_ ACCESS_MASK _In_ POBJECT_ATTRIBUTES _Reserved_ ULONG _In_opt_ PUNICODE_STRING _In_ ULONG _Out_opt_ PULONG Disposition
NTSYSAPI NTSTATUS NTAPI ZwClose(_In_ HANDLE Handle)
_In_ PCWSTR _Inout_ _At_ QueryTable EntryContext
_In_ PMEMORY_AREA _In_ PVOID _In_ BOOLEAN Locked
NTSYSAPI VOID NTAPI RtlCopyUnicodeString(PUNICODE_STRING DestinationString, PUNICODE_STRING SourceString)
#define FILE_ATTRIBUTE_VALID_FLAGS
#define FILE_ATTRIBUTE_READONLY
@ KeyValuePartialInformation
NTSYSAPI NTSTATUS NTAPI RtlAppendUnicodeStringToString(PUNICODE_STRING Destination, PUNICODE_STRING Source)
#define FILE_READ_ATTRIBUTES
NTSYSAPI VOID NTAPI RtlInitUnicodeString(PUNICODE_STRING DestinationString, PCWSTR SourceString)
#define FILE_SHARE_DELETE
#define FILE_SHARE_VALID_FLAGS
#define KEY_ENUMERATE_SUB_KEYS
NTSYSAPI NTSTATUS NTAPI RtlIntegerToUnicodeString(ULONG Value, ULONG Base, PUNICODE_STRING String)
struct _KEY_VALUE_PARTIAL_INFORMATION * PKEY_VALUE_PARTIAL_INFORMATION
#define FILE_ATTRIBUTE_DIRECTORY
#define FILE_ATTRIBUTE_TEMPORARY
_In_ ULONG _In_ ULONG _In_ ULONG Length
#define IOCTL_REDIR_QUERY_PATH
struct _QUERY_PATH_REQUEST * PQUERY_PATH_REQUEST
BOOLEAN NTAPI CcCopyWrite(IN PFILE_OBJECT FileObject, IN PLARGE_INTEGER FileOffset, IN ULONG Length, IN BOOLEAN Wait, IN PVOID Buffer)
BOOLEAN NTAPI CcCanIWrite(IN PFILE_OBJECT FileObject, IN ULONG BytesToWrite, IN BOOLEAN Wait, IN UCHAR Retrying)
BOOLEAN NTAPI CcCopyRead(IN PFILE_OBJECT FileObject, IN PLARGE_INTEGER FileOffset, IN ULONG Length, IN BOOLEAN Wait, OUT PVOID Buffer, OUT PIO_STATUS_BLOCK IoStatus)
VOID NTAPI CcDeferWrite(IN PFILE_OBJECT FileObject, IN PCC_POST_DEFERRED_WRITE PostRoutine, IN PVOID Context1, IN PVOID Context2, IN ULONG BytesToWrite, IN BOOLEAN Retrying)
VOID NTAPI ExSetResourceOwnerPointer(IN PERESOURCE Resource, IN PVOID OwnerPointer)
VOID FASTCALL ExReleaseResourceLite(IN PERESOURCE Resource)
BOOLEAN NTAPI FsRtlDoesNameContainWildCards(IN PUNICODE_STRING Name)
NTSTATUS NTAPI IoCreateDevice(IN PDRIVER_OBJECT DriverObject, IN ULONG DeviceExtensionSize, IN PUNICODE_STRING DeviceName, IN DEVICE_TYPE DeviceType, IN ULONG DeviceCharacteristics, IN BOOLEAN Exclusive, OUT PDEVICE_OBJECT *DeviceObject)
VOID NTAPI IoSetShareAccess(IN ACCESS_MASK DesiredAccess, IN ULONG DesiredShareAccess, IN PFILE_OBJECT FileObject, OUT PSHARE_ACCESS ShareAccess)
NTSTATUS NTAPI IoCheckShareAccess(IN ACCESS_MASK DesiredAccess, IN ULONG DesiredShareAccess, IN PFILE_OBJECT FileObject, IN PSHARE_ACCESS ShareAccess, IN BOOLEAN Update)
VOID NTAPI IoRemoveShareAccess(IN PFILE_OBJECT FileObject, IN PSHARE_ACCESS ShareAccess)
VOID NTAPI IoUpdateShareAccess(IN PFILE_OBJECT FileObject, OUT PSHARE_ACCESS ShareAccess)
#define IoCompleteRequest
BOOLEAN NTAPI IoIsOperationSynchronous(IN PIRP Irp)
PIRP NTAPI IoGetTopLevelIrp(VOID)
VOID NTAPI IoSetTopLevelIrp(IN PIRP Irp)
VOID NTAPI IoReleaseCancelSpinLock(IN KIRQL Irql)
VOID NTAPI IoGetStackLimits(OUT PULONG_PTR LowLimit, OUT PULONG_PTR HighLimit)
PEPROCESS NTAPI IoGetCurrentProcess(VOID)
VOID NTAPI IoAcquireCancelSpinLock(OUT PKIRQL Irql)
VOID NTAPI IoRegisterFileSystem(IN PDEVICE_OBJECT DeviceObject)
VOID NTAPI KeInitializeMutex(IN PKMUTEX Mutex, IN ULONG Level)
NTSTATUS NTAPI SeQueryAuthenticationIdToken(_In_ PACCESS_TOKEN Token, _Out_ PLUID LogonId)
Queries the authentication ID of an access token.
NTSTATUS NTAPI SeQuerySessionIdToken(_In_ PACCESS_TOKEN Token, _Out_ PULONG pSessionId)
Queries the session ID of an access token.
#define RxGetRequestorProcess(RxContext)
#define RxAdjustAllocationSizeforCC(Fcb)
#define RxAllocatePoolWithTag
#define RxCaptureFileObject
#define RxCaptureParamBlock
#define STATUS_FILE_LOCK_CONFLICT
#define STATUS_OBJECT_PATH_SYNTAX_BAD
#define STATUS_FILE_CLOSED
#define STATUS_USER_MAPPED_FILE
#define STATUS_BAD_NETWORK_PATH
#define STATUS_REDIRECTOR_NOT_STARTED
#define STATUS_REDIRECTOR_STARTED
#define STATUS_LOCK_NOT_GRANTED
#define STATUS_NETWORK_CREDENTIAL_CONFLICT
#define STATUS_OBJECT_PATH_INVALID
#define STATUS_DFS_UNAVAILABLE
#define STATUS_UNEXPECTED_NETWORK_ERROR
#define STATUS_FILES_OPEN
#define STATUS_NOT_SAME_DEVICE
#define RxAcquirePrefixTableLockShared(T, W)
VOID RxpReleasePrefixTableLock(_In_ PRX_PREFIX_TABLE pTable, _In_ BOOLEAN ProcessBufferingStateChangeRequests)
BOOLEAN RxpAcquirePrefixTableLockShared(_In_ PRX_PREFIX_TABLE pTable, _In_ BOOLEAN Wait, _In_ BOOLEAN ProcessBufferingStateChangeRequests)
#define RxAcquirePrefixTableLockExclusive(T, W)
VOID RxInitializePrefixTable(_Inout_ PRX_PREFIX_TABLE ThisTable, _In_opt_ ULONG TableSize, _In_ BOOLEAN CaseInsensitiveMatch)
#define RxReleasePrefixTableLock(T)
#define FileStandardInformation
#define _SEH2_AbnormalTermination()
VOID RxUnwindTopLevelIrp(IN OUT PRX_TOPLEVELIRP_CONTEXT TopLevelContext)
BOOLEAN RxIsOkToPurgeFcb(PFCB Fcb)
NTSTATUS NTAPI RxCommonQuerySecurity(PRX_CONTEXT Context)
KMUTEX RxSerializationMutex
#define VALID_FILE_ATTRIBUTES
VOID RxUpdateShareAccessPerSrvOpens(IN PSRV_OPEN SrvOpen)
VOID NTAPI RxIndicateChangeOfBufferingStateForSrvOpen(PMRX_SRV_CALL SrvCall, PMRX_SRV_OPEN SrvOpen, PVOID SrvOpenKey, PVOID Context)
VOID RxAddToTopLevelIrpAllocatedContextsList(PRX_TOPLEVELIRP_CONTEXT TopLevelContext)
NTSTATUS NTAPI RxLowIoReadShellCompletion(PRX_CONTEXT RxContext)
NTSTATUS RxQueryDirectory(PRX_CONTEXT RxContext)
LUID RxGetUid(IN PSECURITY_SUBJECT_CONTEXT SubjectSecurityContext)
NTSTATUS NTAPI RxCommonUnimplemented(PRX_CONTEXT Context)
VOID NTAPI RxGetRegistryParameters(IN PUNICODE_STRING RegistryPath)
VOID NTAPI RxFspDispatch(IN PVOID Context)
#define VALID_DIR_ATTRIBUTES
struct _RX_FSD_DISPATCH_VECTOR RX_FSD_DISPATCH_VECTOR
NTSTATUS NTAPI RxCommonDevFCBClose(PRX_CONTEXT Context)
NTSTATUS RxFsdPostRequest(IN PRX_CONTEXT RxContext)
NTSTATUS NTAPI RxCommonLockControl(PRX_CONTEXT Context)
NPAGED_LOOKASIDE_LIST RxContextLookasideList
NTSTATUS RxSystemControl(IN PRDBSS_DEVICE_OBJECT RxDeviceObject, IN PIRP Irp)
NTSTATUS NTAPI RxCommonClose(PRX_CONTEXT Context)
NTSTATUS NTAPI RxCommonDevFCBCleanup(PRX_CONTEXT Context)
VOID __RxWriteReleaseResources(PRX_CONTEXT RxContext, BOOLEAN ResourceOwnerSet, ULONG LineNumber, PCSTR FileName, ULONG SerialNumber)
NTSTATUS NTAPI RxCommonRead(PRX_CONTEXT Context)
NTSTATUS RxQueryInternalInfo(PRX_CONTEXT RxContext, PFILE_INTERNAL_INFORMATION InternalInfo)
VOID RxpPrepareCreateContextForReuse(PRX_CONTEXT RxContext)
NTSTATUS RxCheckShareAccessPerSrvOpens(IN PFCB Fcb, IN ACCESS_MASK DesiredAccess, IN ULONG DesiredShareAccess)
PRDBSS_DEVICE_OBJECT RxFileSystemDeviceObject
BOOLEAN DisableByteRangeLockingOnReadOnlyFiles
VOID RxCopyCreateParameters(IN PRX_CONTEXT RxContext)
VOID RxSetupNetFileObject(PRX_CONTEXT RxContext)
NTSTATUS RxCreateFromNetRoot(PRX_CONTEXT Context, PUNICODE_STRING NetRootName)
VOID RxConjureOriginalName(PFCB Fcb, PFOBX Fobx, PULONG ActualNameLength, PWCHAR OriginalName, PLONG LengthRemaining, RX_NAME_CONJURING_METHODS NameConjuringMethod)
NTSTATUS RxCreateTreeConnect(IN PRX_CONTEXT RxContext)
VOID RxFreeCanonicalNameBuffer(PRX_CONTEXT Context)
VOID RxAssert(PVOID Assert, PVOID File, ULONG Line, PVOID Message)
NTSTATUS RxPostStackOverflowRead(IN PRX_CONTEXT RxContext)
LIST_ENTRY RxActiveContexts
NTSTATUS RxQueryBasicInfo(PRX_CONTEXT RxContext, PFILE_BASIC_INFORMATION BasicInfo)
NTSTATUS NTAPI RxCommonFlushBuffers(PRX_CONTEXT Context)
NTSTATUS RxQueryCompressedInfo(PRX_CONTEXT RxContext, PFILE_COMPRESSION_INFORMATION CompressionInfo)
ULONG ReadAheadGranularity
#define SET_SIZE_AND_QUERY(AlreadyConsummed, Function)
NTSTATUS NTAPI RxCommonCreate(PRX_CONTEXT Context)
NTSTATUS RxQueryNameInfo(PRX_CONTEXT RxContext, PFILE_NAME_INFORMATION NameInfo)
NTSTATUS NTAPI RxCommonDispatchProblem(PRX_CONTEXT Context)
NTSTATUS NTAPI RxCommonSetEa(PRX_CONTEXT Context)
PRX_CONTEXT RxRemoveOverflowEntry(PRDBSS_DEVICE_OBJECT DeviceObject, WORK_QUEUE_TYPE Queue)
FAST_IO_DISPATCH RxFastIoDispatch
VOID NTAPI RxReleaseFileForNtCreateSection(PFILE_OBJECT FileObject)
PVOID RxNewMapUserBuffer(PRX_CONTEXT RxContext)
RX_FSD_DISPATCH_VECTOR RxFsdDispatchVector[IRP_MJ_MAXIMUM_FUNCTION+1]
NTSTATUS(NTAPI * PRX_FSD_DISPATCH)(PRX_CONTEXT Context)
NTSTATUS RxpSetInfoMiniRdr(PRX_CONTEXT RxContext, FILE_INFORMATION_CLASS Class)
BOOLEAN DisableFlushOnCleanup
NTSTATUS RxQueryStandardInfo(PRX_CONTEXT RxContext, PFILE_STANDARD_INFORMATION StandardInfo)
NTSTATUS NTAPI RxLowIoCompletion(PRX_CONTEXT RxContext)
NTSTATUS RxCanonicalizeFileNameByServerSpecs(PRX_CONTEXT RxContext, PUNICODE_STRING NetRootName)
VOID NTAPI RxCancelRoutine(PDEVICE_OBJECT DeviceObject, PIRP Irp)
NTSTATUS NTAPI RxReleaseForCcFlush(PFILE_OBJECT FileObject, PDEVICE_OBJECT DeviceObject)
BOOLEAN RxIsMemberOfTopLevelIrpAllocatedContextsList(PRX_TOPLEVELIRP_CONTEXT TopLevelContext)
NTSTATUS NTAPI RxLowIoIoCtlShellCompletion(PRX_CONTEXT RxContext)
VOID RxAdjustFileTimesAndSize(PRX_CONTEXT RxContext)
NTSTATUS RxSetEndOfFileInfo(PRX_CONTEXT RxContext)
NTSTATUS NTAPI RxCommonQueryEa(PRX_CONTEXT Context)
VOID RxPrePostIrp(IN PVOID Context, IN PIRP Irp)
NTSTATUS RxSetAllocationInfo(PRX_CONTEXT RxContext)
VOID NTAPI RxInitUnwind(PDRIVER_OBJECT DriverObject, USHORT State)
VOID NTAPI RxLogEventWithAnnotation(IN PRDBSS_DEVICE_OBJECT DeviceObject, IN ULONG EventId, IN NTSTATUS Status, IN PVOID DataBuffer, IN USHORT DataBufferLength, IN PUNICODE_STRING Annotation, IN ULONG AnnotationCount)
NTSTATUS NTAPI RxLockOperationCompletion(IN PVOID Context, IN PIRP Irp)
VOID NTAPI RxDebugControlCommand(_In_ PSTR ControlString)
NTSTATUS RxCanonicalizeNameAndObtainNetRoot(PRX_CONTEXT RxContext, PUNICODE_STRING FileName, PUNICODE_STRING NetRootName)
NTSTATUS RxSetDispositionInfo(PRX_CONTEXT RxContext)
NTSTATUS NTAPI RxCommonDirectoryControl(PRX_CONTEXT Context)
VOID RxRemoveShareAccessPerSrvOpens(IN OUT PSRV_OPEN SrvOpen)
BOOLEAN NTAPI RxFastIoCheckIfPossible(PFILE_OBJECT FileObject, PLARGE_INTEGER FileOffset, ULONG Length, BOOLEAN Wait, ULONG LockKey, BOOLEAN CheckForReadOperation, PIO_STATUS_BLOCK IoStatus, PDEVICE_OBJECT DeviceObject)
NTSTATUS NTAPI RxCommonSetQuotaInformation(PRX_CONTEXT Context)
NTSTATUS RxCollapseOrCreateSrvOpen(PRX_CONTEXT RxContext)
NTSTATUS NTAPI RxGetStringRegistryParameter(IN HANDLE KeyHandle, IN PCWSTR KeyName, OUT PUNICODE_STRING OutString, IN PUCHAR Buffer, IN ULONG BufferLength, IN BOOLEAN LogFailure)
VOID RxUnstart(PRX_CONTEXT Context, PRDBSS_DEVICE_OBJECT DeviceObject)
NTSTATUS RxQueryEaInfo(PRX_CONTEXT RxContext, PFILE_EA_INFORMATION EaInfo)
NTSTATUS RxPrefixClaim(IN PRX_CONTEXT RxContext)
LIST_ENTRY TopLevelIrpAllocatedContextsList
UCHAR RxSpaceForTheWrappersDeviceObject[sizeof(*RxFileSystemDeviceObject)]
PIRP RxGetTopIrpIfRdbssIrp(VOID)
NTSTATUS RxQueryAlternateNameInfo(PRX_CONTEXT RxContext, PFILE_NAME_INFORMATION AltNameInfo)
VOID NTAPI RxLogEventDirect(IN PRDBSS_DEVICE_OBJECT DeviceObject, IN PUNICODE_STRING OriginatorId, IN ULONG EventId, IN NTSTATUS Status, IN ULONG Line)
ULONG RxGetNetworkProviderPriority(PUNICODE_STRING DeviceName)
VOID __RxInitializeTopLevelIrpContext(IN OUT PRX_TOPLEVELIRP_CONTEXT TopLevelContext, IN PIRP Irp, IN PRDBSS_DEVICE_OBJECT RxDeviceObject, IN ULONG Flags)
NTSTATUS NTAPI RxInitializeRegistrationStructures(VOID)
NTSTATUS RxQueryPipeInfo(PRX_CONTEXT RxContext, PFILE_PIPE_INFORMATION PipeInfo)
VOID RxUninitializeCacheMap(PRX_CONTEXT RxContext, PFILE_OBJECT FileObject, PLARGE_INTEGER TruncateSize)
NTSTATUS NTAPI RxFsdDispatch(IN PRDBSS_DEVICE_OBJECT RxDeviceObject, IN PIRP Irp)
NTSTATUS RxFirstCanonicalize(PRX_CONTEXT RxContext, PUNICODE_STRING FileName, PUNICODE_STRING CanonicalName, PNET_ROOT_TYPE NetRootType)
BOOLEAN RxLoudLowIoOpsEnabled
NTSTATUS NTAPI RxCommonSetInformation(PRX_CONTEXT Context)
VOID CheckForLoudOperations(PRX_CONTEXT RxContext)
NTSTATUS NTAPI RxCommonDevFCBQueryVolInfo(PRX_CONTEXT Context)
BOOLEAN RxTryToBecomeTheTopLevelIrp(IN OUT PRX_TOPLEVELIRP_CONTEXT TopLevelContext, IN PIRP Irp, IN PRDBSS_DEVICE_OBJECT RxDeviceObject, IN BOOLEAN ForceTopLevel)
NTSTATUS RxSetRenameInfo(PRX_CONTEXT RxContext)
NTSTATUS NTAPI RxCommonDevFCBFsCtl(PRX_CONTEXT Context)
VOID RxRemoveFromTopLevelIrpAllocatedContextsList(PRX_TOPLEVELIRP_CONTEXT TopLevelContext)
NTSTATUS RxSearchForCollapsibleOpen(PRX_CONTEXT RxContext, ACCESS_MASK DesiredAccess, ULONG ShareAccess)
NTSTATUS NTAPI RxCommonSetVolumeInformation(PRX_CONTEXT Context)
VOID NTAPI RxpUnregisterMinirdr(IN PRDBSS_DEVICE_OBJECT RxDeviceObject)
NTSTATUS NTAPI RxCommonWrite(PRX_CONTEXT Context)
RX_FSD_DISPATCH_VECTOR RxDeviceFCBVector[IRP_MJ_MAXIMUM_FUNCTION+1]
BOOLEAN NTAPI RxFastIoWrite(PFILE_OBJECT FileObject, PLARGE_INTEGER FileOffset, ULONG Length, BOOLEAN Wait, ULONG LockKey, PVOID Buffer, PIO_STATUS_BLOCK IoStatus, PDEVICE_OBJECT DeviceObject)
ULONG RxGetSessionId(IN PIO_STACK_LOCATION IrpSp)
NTSTATUS NTAPI RxStartMinirdr(IN PRX_CONTEXT RxContext, OUT PBOOLEAN PostToFsp)
#define _SEH2_TRY_RETURN(S)
#define RX_TOPLEVELCTX_FLAG_FROM_POOL
PVOID NTAPI _RxAllocatePoolWithTag(_In_ POOL_TYPE PoolType, _In_ SIZE_T NumberOfBytes, _In_ ULONG Tag)
NTSTATUS RxCloseAssociatedSrvOpen(IN PFOBX Fobx, IN PRX_CONTEXT RxContext OPTIONAL)
NTSTATUS RxLowIoLockControlShell(IN PRX_CONTEXT RxContext)
VOID NTAPI RxAcquireFileForNtCreateSection(PFILE_OBJECT FileObject)
BOOLEAN NTAPI RxFastIoDeviceControl(PFILE_OBJECT FileObject, BOOLEAN Wait, PVOID InputBuffer OPTIONAL, ULONG InputBufferLength, PVOID OutputBuffer OPTIONAL, ULONG OutputBufferLength, ULONG IoControlCode, PIO_STATUS_BLOCK IoStatus, PDEVICE_OBJECT DeviceObject)
VOID NTAPI RxpCancelRoutine(PVOID Context)
NTSTATUS NTAPI RxCommonQueryVolumeInformation(PRX_CONTEXT Context)
NTSTATUS NTAPI RxInitializeLog(VOID)
NTSTATUS NTAPI RxCommonDeviceControl(PRX_CONTEXT Context)
BOOLEAN RxCancelOperationInOverflowQueue(PRX_CONTEXT RxContext)
NTSTATUS RxAllocateCanonicalNameBuffer(PRX_CONTEXT RxContext, PUNICODE_STRING CanonicalName, USHORT CanonicalLength)
KSPIN_LOCK TopLevelIrpSpinLock
VOID NTAPI RxUnlockOperation(IN PVOID Context, IN PFILE_LOCK_INFO LockInfo)
VOID NTAPI RxInitializeTopLevelIrpPackage(VOID)
NTSTATUS RxSetBasicInfo(PRX_CONTEXT RxContext)
VOID NTAPI RxInitializeDebugSupport(VOID)
NTSTATUS RxFsdCommonDispatch(PRX_FSD_DISPATCH_VECTOR DispatchVector, UCHAR MajorFunction, PIO_STACK_LOCATION Stack, PFILE_OBJECT FileObject, PIRP Irp, PRDBSS_DEVICE_OBJECT RxDeviceObject)
VOID NTAPI _RxFreePool(_In_ PVOID Buffer)
NTSTATUS RxFindOrCreateFcb(PRX_CONTEXT RxContext, PUNICODE_STRING NetRootName)
BOOLEAN NTAPI RxFastIoRead(PFILE_OBJECT FileObject, PLARGE_INTEGER FileOffset, ULONG Length, BOOLEAN Wait, ULONG LockKey, PVOID Buffer, PIO_STATUS_BLOCK IoStatus, PDEVICE_OBJECT DeviceObject)
NTSTATUS NTAPI RxCommonFileSystemControl(PRX_CONTEXT Context)
NTSTATUS RxNotifyChangeDirectory(PRX_CONTEXT RxContext)
BOOLEAN RxIsThisTheTopLevelIrp(IN PIRP Irp)
NTSTATUS NTAPI RxCommonSetSecurity(PRX_CONTEXT Context)
VOID NTAPI RxCheckFcbStructuresForAlignment(VOID)
VOID NTAPI RxReadRegistryParameters(VOID)
VOID NTAPI RxAddToWorkque(IN PRX_CONTEXT RxContext, IN PIRP Irp)
NTSTATUS RxXXXControlFileCallthru(PRX_CONTEXT Context)
NTSTATUS RxCancelNotifyChangeDirectoryRequestsForVNetRoot(PV_NET_ROOT VNetRoot, BOOLEAN ForceFilesClosed)
struct _RX_FSD_DISPATCH_VECTOR * PRX_FSD_DISPATCH_VECTOR
NTSTATUS NTAPI RxLowIoWriteShellCompletion(PRX_CONTEXT RxContext)
NTSTATUS NTAPI RxCommonDevFCBIoCtl(PRX_CONTEXT Context)
VOID RxCleanupPipeQueues(PRX_CONTEXT Context)
NTSTATUS RxSetPositionInfo(PRX_CONTEXT RxContext)
NTSTATUS NTAPI RxStopMinirdr(IN PRX_CONTEXT RxContext, OUT PBOOLEAN PostToFsp)
NTSTATUS NTAPI RxCommonQueryInformation(PRX_CONTEXT Context)
KSPIN_LOCK RxIrpsListSpinLock
NTSTATUS RxLowIoReadShell(PRX_CONTEXT RxContext)
VOID NTAPI RxInitializeDispatchVectors(PDRIVER_OBJECT DriverObject)
NTSTATUS NTAPI RxCompleteMdl(IN PRX_CONTEXT RxContext)
NTSTATUS NTAPI RxLowIoNotifyChangeDirectoryCompletion(PRX_CONTEXT RxContext)
VOID RxCancelNotifyChangeDirectoryRequestsForFobx(PFOBX Fobx)
NTSTATUS RxpQueryInfoMiniRdr(PRX_CONTEXT RxContext, FILE_INFORMATION_CLASS FileInfoClass, PVOID Buffer)
VOID NTAPI RxUnload(IN PDRIVER_OBJECT DriverObject)
NTSTATUS NTAPI RxCommonQueryQuotaInformation(PRX_CONTEXT Context)
NTSTATUS RxQueryPositionInfo(PRX_CONTEXT RxContext, PFILE_POSITION_INFORMATION PositionInfo)
PRDBSS_DEVICE_OBJECT RxGetTopDeviceObjectIfRdbssIrp(VOID)
NTSTATUS RxLowIoWriteShell(IN PRX_CONTEXT RxContext)
NTSTATUS NTAPI RxRegisterMinirdr(OUT PRDBSS_DEVICE_OBJECT *DeviceObject, IN OUT PDRIVER_OBJECT DriverObject, IN PMINIRDR_DISPATCH MrdrDispatch, IN ULONG Controls, IN PUNICODE_STRING DeviceName, IN ULONG DeviceExtensionSize, IN DEVICE_TYPE DeviceType, IN ULONG DeviceCharacteristics)
NTSTATUS NTAPI RxDriverEntry(IN PDRIVER_OBJECT DriverObject, IN PUNICODE_STRING RegistryPath)
NTSTATUS RxSetSimpleInfo(PRX_CONTEXT RxContext)
VOID NTAPI _RxFreePoolWithTag(_In_ PVOID Buffer, _In_ ULONG Tag)
NTSTATUS NTAPI RxCommonCleanup(PRX_CONTEXT Context)
BOOLEAN RxIsThisAnRdbssTopLevelContext(PRX_TOPLEVELIRP_CONTEXT TopLevelContext)
VOID RxInitializeMinirdrDispatchTable(IN PDRIVER_OBJECT DriverObject)
NTSTATUS NTAPI RxPrepareToReparseSymbolicLink(PRX_CONTEXT RxContext, BOOLEAN SymbolicLinkEmbeddedInOldPath, PUNICODE_STRING NewPath, BOOLEAN NewPathIsAbsolute, PBOOLEAN ReparseRequired)
BOOLEAN RxForceQFIPassThrough
VOID RxPurgeNetFcb(PFCB Fcb, PRX_CONTEXT LocalContext)
NTSTATUS NTAPI RxAcquireForCcFlush(PFILE_OBJECT FileObject, PDEVICE_OBJECT DeviceObject)
NTSTATUS RxSetPipeInfo(PRX_CONTEXT RxContext)
#define IRP_MJ_DIRECTORY_CONTROL
#define IRP_MN_QUERY_DIRECTORY
#define IRP_MN_NOTIFY_CHANGE_DIRECTORY
#define IRP_MJ_DEVICE_CONTROL
#define IRP_MJ_QUERY_VOLUME_INFORMATION
#define IRP_MJ_LOCK_CONTROL
#define IRP_MJ_SET_INFORMATION
#define IRP_MJ_QUERY_INFORMATION
#define RxRestoreExceptionNoBreakpointFlag(R, F)
#define RX_TOPLEVELIRP_CONTEXT_SIGNATURE
@ RX_CONTEXT_FLAG_RECURSIVE_CALL
@ RX_CONTEXT_FLAG_CREATE_MAILSLOT
@ RX_CONTEXT_FLAG_NO_PREPOSTING_NEEDED
@ RX_CONTEXT_FLAG_CANCELLED
@ RX_CONTEXT_FLAG_FSP_DELAYED_OVERFLOW_QUEUE
@ RX_CONTEXT_FLAG_WRITE_THROUGH
@ RX_CONTEXT_FLAG_MUST_SUCCEED_NONBLOCKING
@ RX_CONTEXT_FLAG_NO_COMPLETE_FROM_FSP
@ RX_CONTEXT_FLAG_DEFERRED_WRITE
@ RX_CONTEXT_FLAG_ASYNC_OPERATION
@ RX_CONTEXT_FLAG_MAILSLOT_REPARSE
@ RX_CONTEXT_FLAG_FSP_CRITICAL_OVERFLOW_QUEUE
@ RXCONTEXT_FLAG4LOWIO_THIS_READ_ENLARGED
@ RXCONTEXT_FLAG4LOWIO_READAHEAD
@ RXCONTEXT_FLAG4LOWIO_PIPE_OPERATION
@ RXCONTEXT_FLAG4LOWIO_PIPE_SYNC_OPERATION
@ RXCONTEXT_FLAG4LOWIO_THIS_IO_BUFFERED
FAST_MUTEX RxContextPerFileSerializationMutex
VOID NTAPI RxResumeBlockedOperations_Serially(_Inout_ PRX_CONTEXT RxContext, _Inout_ PLIST_ENTRY BlockingIoQ)
struct _RX_TOPLEVELIRP_CONTEXT * PRX_TOPLEVELIRP_CONTEXT
VOID NTAPI RxReinitializeContext(_Inout_ PRX_CONTEXT RxContext)
VOID RxRemoveOperationFromBlockingQueue(_Inout_ PRX_CONTEXT RxContext)
VOID NTAPI RxDereferenceAndDeleteRxContext_Real(_In_ PRX_CONTEXT RxContext)
#define MINIRDR_CALL_THROUGH(STATUS, DISPATCH, FUNC, ARGLIST)
#define MINIRDR_CALL(STATUS, CONTEXT, DISPATCH, FUNC, ARGLIST)
#define RxSaveAndSetExceptionNoBreakpointFlag(R, F)
#define RxItsTheSameContext()
VOID RxCancelBlockingOperation(_Inout_ PRX_CONTEXT RxContext)
#define RxInitializeTopLevelIrpContext(a, b, c)
#define RxDereferenceAndDeleteRxContext(RXCONTEXT)
@ RX_CONTEXT_CREATE_FLAG_UNC_NAME
@ RX_CONTEXT_CREATE_FLAG_REPARSE
@ RX_CONTEXT_CREATE_FLAG_STRIPPED_TRAILING_BACKSLASH
PRX_CONTEXT NTAPI RxCreateRxContext(_In_ PIRP Irp, _In_ PRDBSS_DEVICE_OBJECT RxDeviceObject, _In_ ULONG InitialContextFlags)
LIST_ENTRY RxSrvCalldownList
#define RX_DIRCTL_POOLTAG
#define RxDumpWantedAccess(w1, w2, wlt, DA, DSA)
#define RxDumpCurrentAccess(w1, w2, wlt, SA)
#define RxIsFcbAcquiredExclusive(Fcb)
PVOID RxMapSystemBuffer(_In_ PRX_CONTEXT RxContext)
VOID NTAPI RxNoOpRelease(_In_ PVOID Fcb)
#define RxAcquireSharedFcb(R, F)
#define RxIsFcbAcquiredShared(Fcb)
VOID RxProcessChangeBufferingStateRequestsForSrvOpen(PSRV_OPEN SrvOpen)
#define RxAcquireExclusiveFcb(R, F)
#define RxAcquirePagingIoResourceShared(RxContext, Fcb, Flag)
VOID RxCompleteRequest_Real(_In_ PRX_CONTEXT RxContext, _In_ PIRP Irp, _In_ NTSTATUS Status)
#define RxSetShareAccess(a1, a2, a3, a4, a5, a6)
enum _RX_NAME_CONJURING_METHODS RX_NAME_CONJURING_METHODS
@ VNetRoot_As_DriveLetter
VOID NTAPI RxReleaseFcbFromReadAhead(_In_ PVOID Null)
NTSTATUS RxFindOrConstructVirtualNetRoot(_In_ PRX_CONTEXT RxContext, _In_ PUNICODE_STRING CanonicalName, _In_ NET_ROOT_TYPE NetRootType, _In_ PUNICODE_STRING RemainingName)
#define RxReleasePagingIoResource(RxContext, Fcb)
NTSTATUS NTAPI RxChangeBufferingState(PSRV_OPEN SrvOpen, PVOID Context, BOOLEAN ComputeNewState)
#define RxReleaseFcb(R, F)
BOOLEAN NTAPI RxAcquireFcbForReadAhead(_In_ PVOID Null, _In_ BOOLEAN Wait)
#define RxCheckShareAccess(a1, a2, a3, a4, a5, a6, a7)
#define RxCompleteAsynchronousRequest(C, S)
#define RxUpdateShareAccess(a1, a2, a3, a4)
#define RX_GET_MRX_FCB(F)
VOID RxOrphanThisFcb(_In_ PFCB Fcb)
#define RxTrackerUpdateHistory(R, F, O, L, F, S)
BOOLEAN NTAPI RxNoOpAcquire(_In_ PVOID Fcb, _In_ BOOLEAN Wait)
BOOLEAN NTAPI RxAcquireFcbForLazyWrite(_In_ PVOID Null, _In_ BOOLEAN Wait)
#define RxReleasePagingIoResourceForThread(RxContext, Fcb, Thread)
#define RxAcquirePagingIoResource(RxContext, Fcb)
NTSTATUS RxCompleteRequest(_In_ PRX_CONTEXT pContext, _In_ NTSTATUS Status)
#define RxReleaseFcbForThread(R, F, T)
#define RxLogFailure(DO, Originator, Event, Status)
#define RxConvertToSharedFcb(R, F)
#define RxAcquireSharedFcbWaitForEx(R, F)
VOID RxLockUserBuffer(_In_ PRX_CONTEXT RxContext, _In_ LOCK_OPERATION Operation, _In_ ULONG BufferLength)
#define RxRemoveShareAccess(a1, a2, a3, a4)
VOID NTAPI RxReleaseFcbFromLazyWrite(_In_ PVOID Null)
RX_SPIN_LOCK RxStrucSupSpinLock
struct _RDBSS_DEVICE_OBJECT * PRDBSS_DEVICE_OBJECT
#define RxGetRdbssState(RxDeviceObject)
#define RxSetRdbssState(RxDeviceObject, NewState)
NTSTATUS NTAPI RxInitializeRxTimer(VOID)
#define RxMaximumWorkQueue
NTSTATUS RxInitializeMRxDispatcher(_Inout_ PRDBSS_DEVICE_OBJECT pMRxDeviceObject)
NTSTATUS NTAPI RxDispatchToWorkerThread(_In_ PRDBSS_DEVICE_OBJECT pMRxDeviceObject, _In_ WORK_QUEUE_TYPE WorkQueueType, _In_ PRX_WORKERTHREAD_ROUTINE Routine, _In_ PVOID pContext)
NTSTATUS NTAPI RxInitializeDispatcher(VOID)
VOID RxSynchronizeWithScavenger(_In_ PRX_CONTEXT RxContext)
BOOLEAN RxScavengeRelatedFobxs(_In_ PFCB Fcb)
#define ATTEMPT_FINALIZE_ON_PURGE
VOID RxMarkFobxOnClose(_In_ PFOBX Fobx)
VOID RxMarkFobxOnCleanup(_In_ PFOBX pFobx, _Out_ PBOOLEAN NeedPurge)
VOID RxScavengeFobxsForNetRoot(PNET_ROOT NetRoot, PFCB PurgingFcb, BOOLEAN SynchronizeWithScavenger)
#define RxInitializeRdbssScavenger(Scavenger, ScavengerTimeLimit)
NTSTATUS RxPurgeRelatedFobxs(PNET_ROOT NetRoot, PRX_CONTEXT RxContext, BOOLEAN AttemptFinalization, PFCB PurgingFcb)
BOOLEAN RxScavengeVNetRoots(_In_ PRDBSS_DEVICE_OBJECT RxDeviceObject)
#define DONT_ATTEMPT_FINALIZE_ON_PURGE
#define RDBSS_NTC_STORAGE_TYPE_UNKNOWN
#define RDBSS_NTC_VOLUME_FCB
#define RDBSS_NTC_STORAGE_TYPE_DIRECTORY
#define RDBSS_NTC_OPENTARGETDIR_FCB
#define RDBSS_NTC_DATA_HEADER
#define RDBSS_NTC_STORAGE_TYPE_FILE
#define RDBSS_NTC_DEVICE_FCB
#define RDBSS_NTC_MAILSLOT
#define RDBSS_NTC_SPOOLFILE
#define RDBSS_NTC_V_NETROOT
#define NodeTypeIsFcb(FCB)
#define RxBugCheck(A, B, C)
#define RDBSS_NTC_IPC_SHARE
BOOLEAN FsRtlCopyRead2(IN PFILE_OBJECT FileObject, IN PLARGE_INTEGER FileOffset, IN ULONG Length, IN BOOLEAN Wait, IN ULONG LockKey, OUT PVOID Buffer, OUT PIO_STATUS_BLOCK IoStatus, IN PDEVICE_OBJECT DeviceObject, IN PVOID TopLevelContext)
BOOLEAN FsRtlCopyWrite2(IN PFILE_OBJECT FileObject, IN PLARGE_INTEGER FileOffset, IN ULONG Length, IN BOOLEAN Wait, IN ULONG LockKey, IN PVOID Buffer, OUT PIO_STATUS_BLOCK IoStatus, IN PDEVICE_OBJECT DeviceObject, IN PVOID TopLevelContext)
BOOLEAN NTAPI MmCanFileBeTruncated(_In_ PSECTION_OBJECT_POINTERS SectionObjectPointer, _In_opt_ PLARGE_INTEGER NewFileSize)
BOOLEAN NTAPI MmFlushImageSection(IN PSECTION_OBJECT_POINTERS SectionObjectPointer, IN MMFLUSH_TYPE FlushType)
#define STATUS_CANNOT_DELETE
#define STATUS_MORE_PROCESSING_REQUIRED
#define STATUS_END_OF_FILE
#define STATUS_BUFFER_OVERFLOW
PULONG MinorVersion OPTIONAL
base of all file and directory entries
PSECURITY_DESCRIPTOR SecurityDescriptor
SECURITY_SUBJECT_CONTEXT SubjectSecurityContext
PACQUIRE_FOR_LAZY_WRITE AcquireForLazyWrite
PRELEASE_FROM_LAZY_WRITE ReleaseFromLazyWrite
PACQUIRE_FOR_READ_AHEAD AcquireForReadAhead
PRELEASE_FROM_READ_AHEAD ReleaseFromReadAhead
PFAST_IO_QUERY_STANDARD_INFO FastIoQueryStandardInfo
PFAST_IO_UNLOCK_ALL_BY_KEY FastIoUnlockAllByKey
PFAST_IO_RELEASE_FOR_CCFLUSH ReleaseForCcFlush
PFAST_IO_WRITE FastIoWrite
PFAST_IO_UNLOCK_ALL FastIoUnlockAll
PFAST_IO_ACQUIRE_FOR_CCFLUSH AcquireForCcFlush
ULONG SizeOfFastIoDispatch
PFAST_IO_DEVICE_CONTROL FastIoDeviceControl
PFAST_IO_ACQUIRE_FILE AcquireFileForNtCreateSection
PFAST_IO_QUERY_BASIC_INFO FastIoQueryBasicInfo
PFAST_IO_UNLOCK_SINGLE FastIoUnlockSingle
PFAST_IO_RELEASE_FILE ReleaseFileForNtCreateSection
PFAST_IO_CHECK_IF_POSSIBLE FastIoCheckIfPossible
RX_BLOCK_CONDITION Condition
union _FCB::@729 Specific
PRX_FSD_DISPATCH_VECTOR PrivateDispatchVector
struct _FCB::@729::@732 Fcb
PMINIRDR_DISPATCH MRxDispatch
LARGE_INTEGER LastWriteTime
FSRTL_ADVANCED_FCB_HEADER Header
LARGE_INTEGER LastAccessTime
PRDBSS_DEVICE_OBJECT RxDeviceObject
LARGE_INTEGER LastChangeTime
RX_FCB_TABLE_ENTRY FcbTableEntry
FSRTL_ADVANCED_FCB_HEADER spacer
SHARE_ACCESS ShareAccessPerSrvOpens
union _FOBX::@1965 Specific
MRX_PIPE_HANDLE_INFORMATION PipeHandleInformation
struct _FOBX::@1965::@1968 NamedPipe
BOOLEAN ContainsWildCards
struct _FOBX::@1965::@1969 DiskFile
PACCESS_STATE AccessState
PSECURITY_QUALITY_OF_SERVICE SecurityQos
ACCESS_MASK DesiredAccess
struct _IO_STACK_LOCATION::@1579::@1580 DeviceIoControl
union _IO_STACK_LOCATION::@1579 Parameters
struct _IO_STACK_LOCATION::@3978::@3988 SetFile
struct _IO_STACK_LOCATION::@3978::@3979 Create
struct _IO_STACK_LOCATION::@3978::@3984 QueryDirectory
union _IRP::@1581 AssociatedIrp
struct _LIST_ENTRY * Flink
union _LOWIO_CONTEXT::@2072 ParamsFor
ERESOURCE_THREAD ResourceThreadId
struct _LOWIO_CONTEXT::@2072::@2075 NotifyChangeDirectory
struct _LOWIO_CONTEXT::@2072::@2073 ReadWrite
PMRX_CALLDOWN MRxShouldTryToCollapseThisOpen
PKEVENT OutstandingAsyncEvent
ULONG OutstandingAsyncWrites
SECTION_OBJECT_POINTERS SectionObjectPointers
PIO_SECURITY_CONTEXT SecurityContext
LONG NumberOfMinirdrsRegistered
PDRIVER_OBJECT DriverObject
NODE_BYTE_SIZE NodeByteSize
NODE_TYPE_CODE NodeTypeCode
FAST_MUTEX MinirdrRegistrationMutex
CACHE_MANAGER_CALLBACKS CacheManagerCallbacks
volatile LONG NumberOfMinirdrsStarted
CACHE_MANAGER_CALLBACKS CacheManagerNoOpCallbacks
LIST_ENTRY RegisteredMiniRdrs
LONG OverflowQueueCount[RxMaximumWorkQueue]
volatile ULONG RandomReadOperations
ULONG NetworkProviderPriority
volatile ULONG WriteOperations
PMINIRDR_DISPATCH Dispatch
LIST_ENTRY OverflowQueue[RxMaximumWorkQueue]
BOOLEAN RegisterMailSlotProvider
volatile ULONG ReadOperations
volatile ULONG RandomWriteOperations
RDBSS_SCAVENGER RdbssScavengerInDeviceObject
PRDBSS_SCAVENGER pRdbssScavenger
LARGE_INTEGER NonPagingWriteBytesRequested
PRDBSS_EXPORTS RdbssExports
RX_PREFIX_TABLE RxNetNameTableInDeviceObject
LARGE_INTEGER PagingWriteBytesRequested
LARGE_INTEGER CacheReadBytesRequested
PDEVICE_OBJECT RDBSSDeviceObject
RX_SPIN_LOCK OverflowQueueSpinLock
volatile LONG PostedRequestCount[RxMaximumWorkQueue]
PRX_PREFIX_TABLE pRxNetNameTable
LARGE_INTEGER PagingReadBytesRequested
PKEVENT pAsynchronousRequestsCompletionEvent
LARGE_INTEGER NonPagingReadBytesRequested
ULONG RegistrationControls
BOOLEAN RegisterUncProvider
LARGE_INTEGER NetworkReadBytesRequested
LARGE_INTEGER CacheWriteBytesRequested
UNICODE_STRING DeviceName
LIST_ENTRY MiniRdrListLinks
PRX_SPIN_LOCK pRxStrucSupSpinLock
LIST_ENTRY OverflowListEntry
BOOLEAN FcbResourceAcquired
PWCH AlsoCanonicalNameBuffer
PMRX_CALLDOWN MRxCancelRoutine
LOWIO_CONTEXT LowIoContext
PRX_DISPATCH ResumeRoutine
PETHREAD LastExecutionThread
volatile ULONG ReferenceCount
FILE_INFORMATION_CLASS FileInformationClass
struct _RX_CONTEXT::@2153::@2161 Info
IO_STATUS_BLOCK IoStatusBlock
PIO_STACK_LOCATION CurrentIrpSp
PRDBSS_DEVICE_OBJECT RxDeviceObject
PMRX_SRV_OPEN pRelevantSrvOpen
struct _RX_CONTEXT::@2155::@2167 Create
struct _RX_CONTEXT::@2155::@2168 QueryDirectory
BOOLEAN FcbPagingIoResourceAcquired
PRX_FSD_DISPATCH CommonRoutine
SECURITY_IMPERSONATION_LEVEL ImpersonationLevel
volatile LONG NumberOfCloseDelayedFiles
RX_BLOCK_CONDITION Condition
UNICODE_STRING NamePrefix
RX_PREFIX_ENTRY PrefixEntry
volatile LONG AdditionalReferenceForDeleteFsctlTaken
VOID NTAPI SeReleaseSubjectContext(_In_ PSECURITY_SUBJECT_CONTEXT SubjectContext)
Releases both the primary and client tokens of a security subject context.
VOID NTAPI SeCaptureSubjectContext(_Out_ PSECURITY_SUBJECT_CONTEXT SubjectContext)
Captures the security subject context of the calling thread and calling process.
#define FIELD_OFFSET(t, f)
#define RtlCopyMemory(Destination, Source, Length)
#define RtlZeroMemory(Destination, Length)
#define RtlMoveMemory(Destination, Source, Length)
#define CONTAINING_RECORD(address, type, field)
static const unsigned short IsPipe
#define STATUS_INVALID_DEVICE_REQUEST
#define STATUS_ACCESS_DENIED
#define STATUS_INVALID_PARAMETER
#define STATUS_UNSUCCESSFUL
#define STATUS_OBJECT_NAME_COLLISION
#define STATUS_SHARING_VIOLATION
#define STATUS_OBJECT_NAME_INVALID
#define STATUS_INSUFFICIENT_RESOURCES
NTSTATUS NTAPI FsRtlRegisterUncProvider(OUT PHANDLE Handle, IN PCUNICODE_STRING RedirectorDeviceName, IN BOOLEAN MailslotsSupported)
static BOOL Write(PBYTE Address, PBYTE Data, SIZE_T Size)
_Must_inspect_result_ _In_ WDFDMAENABLER _In_ _In_opt_ PWDF_OBJECT_ATTRIBUTES Attributes
#define DECLARE_CONST_UNICODE_STRING(_variablename, _string)
_In_ PDEVICE_OBJECT DeviceObject
_Must_inspect_result_ _In_ WDFDEVICE _In_ DEVICE_REGISTRY_PROPERTY _In_ ULONG _Out_ PULONG ResultLength
_Must_inspect_result_ _In_ WDFDEVICE _In_ BOOLEAN _In_opt_ PVOID Tag
_Must_inspect_result_ _In_ WDFDEVICE _In_ ULONG _In_ ACCESS_MASK DesiredAccess
_Must_inspect_result_ _In_ WDFDEVICE _In_ DEVICE_REGISTRY_PROPERTY _In_ _Strict_type_match_ POOL_TYPE PoolType
_In_ WDFREQUEST _In_ WDFFILEOBJECT FileObject
_Must_inspect_result_ _In_ WDFDEVICE _In_ PIRP _In_ WDFQUEUE Queue
_Must_inspect_result_ _In_ WDFDEVICE _In_ PCUNICODE_STRING KeyName
_Must_inspect_result_ _In_ WDFDEVICE _In_ DEVICE_REGISTRY_PROPERTY _In_ ULONG BufferLength
_Must_inspect_result_ _In_ PWDFDEVICE_INIT _In_opt_ PCUNICODE_STRING DeviceName
_In_ UCHAR _In_ UCHAR MinorFunction
_In_ WDFDEVICE _In_ ULONG DeviceCharacteristics
_In_ WDFDPC _In_ BOOLEAN Wait
_Must_inspect_result_ _In_ PDRIVER_OBJECT _In_ PCUNICODE_STRING RegistryPath
_Must_inspect_result_ _In_ PDRIVER_OBJECT DriverObject
_Must_inspect_result_ _In_ WDFDEVICE _In_ LPCGUID _Out_ PINTERFACE _In_ USHORT _In_ USHORT Version
_In_ WDFREQUEST _In_ size_t _In_ size_t _In_ ULONG IoControlCode
_In_ WDFREQUEST _In_ size_t OutputBufferLength
_In_ WDFREQUEST _In_ size_t _In_ size_t InputBufferLength
_Must_inspect_result_ _In_ WDFIOTARGET _In_opt_ WDFREQUEST _In_opt_ PWDF_MEMORY_DESCRIPTOR OutputBuffer
_Must_inspect_result_ _In_ WDFIOTARGET _In_opt_ WDFREQUEST _In_opt_ PWDF_MEMORY_DESCRIPTOR InputBuffer
_In_ WDFREQUEST _In_ PIO_STACK_LOCATION Stack
_Must_inspect_result_ _In_opt_ PWDF_OBJECT_ATTRIBUTES _Out_ WDFWAITLOCK * Lock
_In_ WDFUSBINTERFACE _In_ UCHAR _Out_opt_ PWDF_USB_PIPE_INFORMATION PipeInfo
_IRQL_requires_same_ typedef _In_ ULONG ControlCode
VOID NTAPI ExQueueWorkItem(IN PWORK_QUEUE_ITEM WorkItem, IN WORK_QUEUE_TYPE QueueType)
_Must_inspect_result_ _In_ ULONG Flags
VOID(NTAPI * PCC_POST_DEFERRED_WRITE)(_In_ PVOID Context1, _In_ PVOID Context2)
#define ExInterlockedAddLargeStatistic(Addend, Increment)
#define ExInitializeWorkItem(Item, Routine, Context)
FORCEINLINE VOID ExInitializeFastMutex(_Out_ PFAST_MUTEX FastMutex)
enum _WORK_QUEUE_TYPE WORK_QUEUE_TYPE
struct LOOKASIDE_ALIGN _NPAGED_LOOKASIDE_LIST NPAGED_LOOKASIDE_LIST
_In_ ULONG DesiredShareAccess
#define SL_INDEX_SPECIFIED
#define IRP_MJ_CREATE_NAMED_PIPE
#define IRP_MJ_CREATE_MAILSLOT
#define FO_TEMPORARY_FILE
#define IRP_MJ_FILE_SYSTEM_CONTROL
#define IRP_MJ_SET_VOLUME_INFORMATION
#define FO_FILE_FAST_IO_READ
#define IRP_MN_REMOVE_DEVICE
#define POOL_COLD_ALLOCATION
#define SL_RETURN_SINGLE_ENTRY
DRIVER_DISPATCH * PDRIVER_DISPATCH
#define IRP_MJ_QUERY_SECURITY
#define FO_CLEANUP_COMPLETE
#define IRP_MJ_SYSTEM_CONTROL
#define FO_FILE_SIZE_CHANGED
#define IRP_MJ_FLUSH_BUFFERS
#define IOCTL_LMR_ARE_FILE_OBJECTS_ON_SAME_SERVER
#define FO_NO_INTERMEDIATE_BUFFERING
#define FO_SYNCHRONOUS_IO
#define IRP_SYNCHRONOUS_PAGING_IO
#define IRP_MJ_SET_SECURITY
#define SL_OPEN_TARGET_DIRECTORY
_Must_inspect_result_ typedef _In_ PHYSICAL_ADDRESS _Inout_ PLARGE_INTEGER NumberOfBytes
#define IRP_MJ_MAXIMUM_FUNCTION
_Requires_lock_held_ Interrupt _Releases_lock_ Interrupt _In_ _IRQL_restores_ KIRQL OldIrql
enum _LOCK_OPERATION LOCK_OPERATION
#define MmGetSystemAddressForMdlSafe(_Mdl, _Priority)
#define PsGetCurrentProcess
_In_ __drv_aliasesMem PSTRING Prefix
#define SeQuerySubjectContextToken(SubjectContext)
_In_opt_ PVOID _In_opt_ PUNICODE_STRING _In_ PSECURITY_DESCRIPTOR _In_ PACCESS_STATE AccessState
_In_ PSECURITY_SUBJECT_CONTEXT SubjectSecurityContext