Home | Info | Community | Development | myReactOS | Contact Us
ReactOS Development > Doxygenfsrtlfuncs.h
Go to the documentation of this file.
00001 $if (_NTIFS_) 00002 /* FSRTL Functions */ 00003 00004 #define FsRtlEnterFileSystem KeEnterCriticalRegion 00005 #define FsRtlExitFileSystem KeLeaveCriticalRegion 00006 00007 #if (NTDDI_VERSION >= NTDDI_WIN2K) 00008 00009 _Must_inspect_result_ 00010 _IRQL_requires_max_(PASSIVE_LEVEL) 00011 NTKERNELAPI 00012 BOOLEAN 00013 NTAPI 00014 FsRtlCopyRead( 00015 _In_ PFILE_OBJECT FileObject, 00016 _In_ PLARGE_INTEGER FileOffset, 00017 _In_ ULONG Length, 00018 _In_ BOOLEAN Wait, 00019 _In_ ULONG LockKey, 00020 _Out_writes_bytes_(Length) PVOID Buffer, 00021 _Out_ PIO_STATUS_BLOCK IoStatus, 00022 _In_ PDEVICE_OBJECT DeviceObject); 00023 00024 _Must_inspect_result_ 00025 _IRQL_requires_max_(PASSIVE_LEVEL) 00026 NTKERNELAPI 00027 BOOLEAN 00028 NTAPI 00029 FsRtlCopyWrite( 00030 _In_ PFILE_OBJECT FileObject, 00031 _In_ PLARGE_INTEGER FileOffset, 00032 _In_ ULONG Length, 00033 _In_ BOOLEAN Wait, 00034 _In_ ULONG LockKey, 00035 _In_reads_bytes_(Length) PVOID Buffer, 00036 _Out_ PIO_STATUS_BLOCK IoStatus, 00037 _In_ PDEVICE_OBJECT DeviceObject); 00038 00039 _Must_inspect_result_ 00040 _IRQL_requires_max_(APC_LEVEL) 00041 NTKERNELAPI 00042 BOOLEAN 00043 NTAPI 00044 FsRtlMdlReadDev( 00045 _In_ PFILE_OBJECT FileObject, 00046 _In_ PLARGE_INTEGER FileOffset, 00047 _In_ ULONG Length, 00048 _In_ ULONG LockKey, 00049 _Outptr_ PMDL *MdlChain, 00050 _Out_ PIO_STATUS_BLOCK IoStatus, 00051 _In_opt_ PDEVICE_OBJECT DeviceObject); 00052 00053 _IRQL_requires_max_(PASSIVE_LEVEL) 00054 NTKERNELAPI 00055 BOOLEAN 00056 NTAPI 00057 FsRtlMdlReadCompleteDev( 00058 _In_ PFILE_OBJECT FileObject, 00059 _In_ PMDL MdlChain, 00060 _In_opt_ PDEVICE_OBJECT DeviceObject); 00061 00062 _Must_inspect_result_ 00063 _IRQL_requires_max_(APC_LEVEL) 00064 NTKERNELAPI 00065 BOOLEAN 00066 NTAPI 00067 FsRtlPrepareMdlWriteDev( 00068 _In_ PFILE_OBJECT FileObject, 00069 _In_ PLARGE_INTEGER FileOffset, 00070 _In_ ULONG Length, 00071 _In_ ULONG LockKey, 00072 _Outptr_ PMDL *MdlChain, 00073 _Out_ PIO_STATUS_BLOCK IoStatus, 00074 _In_ PDEVICE_OBJECT DeviceObject); 00075 00076 _Must_inspect_result_ 00077 _IRQL_requires_max_(PASSIVE_LEVEL) 00078 NTKERNELAPI 00079 BOOLEAN 00080 NTAPI 00081 FsRtlMdlWriteCompleteDev( 00082 _In_ PFILE_OBJECT FileObject, 00083 _In_ PLARGE_INTEGER FileOffset, 00084 _In_ PMDL MdlChain, 00085 _In_opt_ PDEVICE_OBJECT DeviceObject); 00086 00087 _IRQL_requires_max_(PASSIVE_LEVEL) 00088 NTKERNELAPI 00089 VOID 00090 NTAPI 00091 FsRtlAcquireFileExclusive( 00092 _In_ PFILE_OBJECT FileObject); 00093 00094 _IRQL_requires_max_(APC_LEVEL) 00095 NTKERNELAPI 00096 VOID 00097 NTAPI 00098 FsRtlReleaseFile( 00099 _In_ PFILE_OBJECT FileObject); 00100 00101 _Must_inspect_result_ 00102 _IRQL_requires_max_(PASSIVE_LEVEL) 00103 NTKERNELAPI 00104 NTSTATUS 00105 NTAPI 00106 FsRtlGetFileSize( 00107 _In_ PFILE_OBJECT FileObject, 00108 _Out_ PLARGE_INTEGER FileSize); 00109 00110 _Must_inspect_result_ 00111 NTKERNELAPI 00112 BOOLEAN 00113 NTAPI 00114 FsRtlIsTotalDeviceFailure( 00115 _In_ NTSTATUS Status); 00116 00117 _Must_inspect_result_ 00118 _IRQL_requires_max_(APC_LEVEL) 00119 NTKERNELAPI 00120 PFILE_LOCK 00121 NTAPI 00122 FsRtlAllocateFileLock( 00123 _In_opt_ PCOMPLETE_LOCK_IRP_ROUTINE CompleteLockIrpRoutine, 00124 _In_opt_ PUNLOCK_ROUTINE UnlockRoutine); 00125 00126 _IRQL_requires_max_(APC_LEVEL) 00127 NTKERNELAPI 00128 VOID 00129 NTAPI 00130 FsRtlFreeFileLock( 00131 _In_ PFILE_LOCK FileLock); 00132 00133 _IRQL_requires_max_(APC_LEVEL) 00134 NTKERNELAPI 00135 VOID 00136 NTAPI 00137 FsRtlInitializeFileLock( 00138 _Out_ PFILE_LOCK FileLock, 00139 _In_opt_ PCOMPLETE_LOCK_IRP_ROUTINE CompleteLockIrpRoutine, 00140 _In_opt_ PUNLOCK_ROUTINE UnlockRoutine); 00141 00142 _IRQL_requires_max_(APC_LEVEL) 00143 NTKERNELAPI 00144 VOID 00145 NTAPI 00146 FsRtlUninitializeFileLock( 00147 _Inout_ PFILE_LOCK FileLock); 00148 00149 /* 00150 FsRtlProcessFileLock: 00151 00152 ret: 00153 -STATUS_INVALID_DEVICE_REQUEST 00154 -STATUS_RANGE_NOT_LOCKED from unlock routines. 00155 -STATUS_PENDING, STATUS_LOCK_NOT_GRANTED from FsRtlPrivateLock 00156 (redirected IoStatus->Status). 00157 00158 Internals: 00159 -switch ( Irp->CurrentStackLocation->MinorFunction ) 00160 lock: return FsRtlPrivateLock; 00161 unlocksingle: return FsRtlFastUnlockSingle; 00162 unlockall: return FsRtlFastUnlockAll; 00163 unlockallbykey: return FsRtlFastUnlockAllByKey; 00164 default: IofCompleteRequest with STATUS_INVALID_DEVICE_REQUEST; 00165 return STATUS_INVALID_DEVICE_REQUEST; 00166 00167 -'AllwaysZero' is passed thru as 'AllwaysZero' to lock / unlock routines. 00168 -'Irp' is passet thru as 'Irp' to FsRtlPrivateLock. 00169 */ 00170 _Must_inspect_result_ 00171 _IRQL_requires_max_(APC_LEVEL) 00172 NTKERNELAPI 00173 NTSTATUS 00174 NTAPI 00175 FsRtlProcessFileLock( 00176 _In_ PFILE_LOCK FileLock, 00177 _In_ PIRP Irp, 00178 _In_opt_ PVOID Context); 00179 00180 /* 00181 FsRtlCheckLockForReadAccess: 00182 00183 All this really does is pick out the lock parameters from the irp (io stack 00184 location?), get IoGetRequestorProcess, and pass values on to 00185 FsRtlFastCheckLockForRead. 00186 */ 00187 _Must_inspect_result_ 00188 _IRQL_requires_max_(APC_LEVEL) 00189 NTKERNELAPI 00190 BOOLEAN 00191 NTAPI 00192 FsRtlCheckLockForReadAccess( 00193 _In_ PFILE_LOCK FileLock, 00194 _In_ PIRP Irp); 00195 00196 /* 00197 FsRtlCheckLockForWriteAccess: 00198 00199 All this really does is pick out the lock parameters from the irp (io stack 00200 location?), get IoGetRequestorProcess, and pass values on to 00201 FsRtlFastCheckLockForWrite. 00202 */ 00203 _Must_inspect_result_ 00204 _IRQL_requires_max_(APC_LEVEL) 00205 NTKERNELAPI 00206 BOOLEAN 00207 NTAPI 00208 FsRtlCheckLockForWriteAccess( 00209 _In_ PFILE_LOCK FileLock, 00210 _In_ PIRP Irp); 00211 00212 _Must_inspect_result_ 00213 _IRQL_requires_max_(APC_LEVEL) 00214 NTKERNELAPI 00215 BOOLEAN 00216 NTAPI 00217 FsRtlFastCheckLockForRead( 00218 _In_ PFILE_LOCK FileLock, 00219 _In_ PLARGE_INTEGER FileOffset, 00220 _In_ PLARGE_INTEGER Length, 00221 _In_ ULONG Key, 00222 _In_ PFILE_OBJECT FileObject, 00223 _In_ PVOID Process); 00224 00225 _Must_inspect_result_ 00226 _IRQL_requires_max_(APC_LEVEL) 00227 NTKERNELAPI 00228 BOOLEAN 00229 NTAPI 00230 FsRtlFastCheckLockForWrite( 00231 _In_ PFILE_LOCK FileLock, 00232 _In_ PLARGE_INTEGER FileOffset, 00233 _In_ PLARGE_INTEGER Length, 00234 _In_ ULONG Key, 00235 _In_ PFILE_OBJECT FileObject, 00236 _In_ PVOID Process); 00237 00238 /* 00239 FsRtlGetNextFileLock: 00240 00241 ret: NULL if no more locks 00242 00243 Internals: 00244 FsRtlGetNextFileLock uses FileLock->LastReturnedLockInfo and 00245 FileLock->LastReturnedLock as storage. 00246 LastReturnedLock is a pointer to the 'raw' lock inkl. double linked 00247 list, and FsRtlGetNextFileLock needs this to get next lock on subsequent 00248 calls with Restart = FALSE. 00249 */ 00250 _Must_inspect_result_ 00251 _IRQL_requires_max_(APC_LEVEL) 00252 NTKERNELAPI 00253 PFILE_LOCK_INFO 00254 NTAPI 00255 FsRtlGetNextFileLock( 00256 _In_ PFILE_LOCK FileLock, 00257 _In_ BOOLEAN Restart); 00258 00259 _IRQL_requires_max_(APC_LEVEL) 00260 NTKERNELAPI 00261 NTSTATUS 00262 NTAPI 00263 FsRtlFastUnlockSingle( 00264 _In_ PFILE_LOCK FileLock, 00265 _In_ PFILE_OBJECT FileObject, 00266 _In_ PLARGE_INTEGER FileOffset, 00267 _In_ PLARGE_INTEGER Length, 00268 _In_ PEPROCESS Process, 00269 _In_ ULONG Key, 00270 _In_opt_ PVOID Context, 00271 _In_ BOOLEAN AlreadySynchronized); 00272 00273 _IRQL_requires_max_(APC_LEVEL) 00274 NTKERNELAPI 00275 NTSTATUS 00276 NTAPI 00277 FsRtlFastUnlockAll( 00278 _In_ PFILE_LOCK FileLock, 00279 _In_ PFILE_OBJECT FileObject, 00280 _In_ PEPROCESS Process, 00281 _In_opt_ PVOID Context); 00282 00283 _IRQL_requires_max_(APC_LEVEL) 00284 NTKERNELAPI 00285 NTSTATUS 00286 NTAPI 00287 FsRtlFastUnlockAllByKey( 00288 _In_ PFILE_LOCK FileLock, 00289 _In_ PFILE_OBJECT FileObject, 00290 _In_ PEPROCESS Process, 00291 _In_ ULONG Key, 00292 _In_opt_ PVOID Context); 00293 00294 /* 00295 FsRtlPrivateLock: 00296 00297 ret: IoStatus->Status: STATUS_PENDING, STATUS_LOCK_NOT_GRANTED 00298 00299 Internals: 00300 -Calls IoCompleteRequest if Irp 00301 -Uses exception handling / ExRaiseStatus with STATUS_INSUFFICIENT_RESOURCES 00302 */ 00303 _Must_inspect_result_ 00304 _IRQL_requires_max_(APC_LEVEL) 00305 __drv_preferredFunction(FsRtlFastLock, "Obsolete") 00306 NTKERNELAPI 00307 BOOLEAN 00308 NTAPI 00309 FsRtlPrivateLock( 00310 _In_ PFILE_LOCK FileLock, 00311 _In_ PFILE_OBJECT FileObject, 00312 _In_ PLARGE_INTEGER FileOffset, 00313 _In_ PLARGE_INTEGER Length, 00314 _In_ PEPROCESS Process, 00315 _In_ ULONG Key, 00316 _In_ BOOLEAN FailImmediately, 00317 _In_ BOOLEAN ExclusiveLock, 00318 _Out_ PIO_STATUS_BLOCK IoStatus, 00319 _In_opt_ PIRP Irp, 00320 _In_opt_ __drv_aliasesMem PVOID Context, 00321 _In_ BOOLEAN AlreadySynchronized); 00322 00323 _IRQL_requires_max_(APC_LEVEL) 00324 NTKERNELAPI 00325 VOID 00326 NTAPI 00327 FsRtlInitializeTunnelCache( 00328 _In_ PTUNNEL Cache); 00329 00330 _IRQL_requires_max_(APC_LEVEL) 00331 NTKERNELAPI 00332 VOID 00333 NTAPI 00334 FsRtlAddToTunnelCache( 00335 _In_ PTUNNEL Cache, 00336 _In_ ULONGLONG DirectoryKey, 00337 _In_ PUNICODE_STRING ShortName, 00338 _In_ PUNICODE_STRING LongName, 00339 _In_ BOOLEAN KeyByShortName, 00340 _In_ ULONG DataLength, 00341 _In_reads_bytes_(DataLength) PVOID Data); 00342 00343 _Must_inspect_result_ 00344 _IRQL_requires_max_(APC_LEVEL) 00345 NTKERNELAPI 00346 BOOLEAN 00347 NTAPI 00348 FsRtlFindInTunnelCache( 00349 _In_ PTUNNEL Cache, 00350 _In_ ULONGLONG DirectoryKey, 00351 _In_ PUNICODE_STRING Name, 00352 _Out_ PUNICODE_STRING ShortName, 00353 _Out_ PUNICODE_STRING LongName, 00354 _Inout_ PULONG DataLength, 00355 _Out_writes_bytes_to_(*DataLength, *DataLength) PVOID Data); 00356 00357 _IRQL_requires_max_(APC_LEVEL) 00358 NTKERNELAPI 00359 VOID 00360 NTAPI 00361 FsRtlDeleteKeyFromTunnelCache( 00362 _In_ PTUNNEL Cache, 00363 _In_ ULONGLONG DirectoryKey); 00364 00365 _IRQL_requires_max_(APC_LEVEL) 00366 NTKERNELAPI 00367 VOID 00368 NTAPI 00369 FsRtlDeleteTunnelCache( 00370 _In_ PTUNNEL Cache); 00371 00372 _IRQL_requires_max_(APC_LEVEL) 00373 NTKERNELAPI 00374 VOID 00375 NTAPI 00376 FsRtlDissectDbcs( 00377 _In_ ANSI_STRING Name, 00378 _Out_ PANSI_STRING FirstPart, 00379 _Out_ PANSI_STRING RemainingPart); 00380 00381 _Must_inspect_result_ 00382 _IRQL_requires_max_(APC_LEVEL) 00383 NTKERNELAPI 00384 BOOLEAN 00385 NTAPI 00386 FsRtlDoesDbcsContainWildCards( 00387 _In_ PANSI_STRING Name); 00388 00389 _Must_inspect_result_ 00390 _IRQL_requires_max_(APC_LEVEL) 00391 NTKERNELAPI 00392 BOOLEAN 00393 NTAPI 00394 FsRtlIsDbcsInExpression( 00395 _In_ PANSI_STRING Expression, 00396 _In_ PANSI_STRING Name); 00397 00398 _Must_inspect_result_ 00399 _IRQL_requires_max_(APC_LEVEL) 00400 NTKERNELAPI 00401 BOOLEAN 00402 NTAPI 00403 FsRtlIsFatDbcsLegal( 00404 _In_ ANSI_STRING DbcsName, 00405 _In_ BOOLEAN WildCardsPermissible, 00406 _In_ BOOLEAN PathNamePermissible, 00407 _In_ BOOLEAN LeadingBackslashPermissible); 00408 00409 _Must_inspect_result_ 00410 _IRQL_requires_max_(APC_LEVEL) 00411 NTKERNELAPI 00412 BOOLEAN 00413 NTAPI 00414 FsRtlIsHpfsDbcsLegal( 00415 _In_ ANSI_STRING DbcsName, 00416 _In_ BOOLEAN WildCardsPermissible, 00417 _In_ BOOLEAN PathNamePermissible, 00418 _In_ BOOLEAN LeadingBackslashPermissible); 00419 00420 NTKERNELAPI 00421 NTSTATUS 00422 NTAPI 00423 FsRtlNormalizeNtstatus( 00424 _In_ NTSTATUS Exception, 00425 _In_ NTSTATUS GenericException); 00426 00427 _Must_inspect_result_ 00428 NTKERNELAPI 00429 BOOLEAN 00430 NTAPI 00431 FsRtlIsNtstatusExpected( 00432 _In_ NTSTATUS Ntstatus); 00433 00434 _IRQL_requires_max_(APC_LEVEL) 00435 __drv_preferredFunction(ExAllocateFromNPagedLookasideList, "The FsRtlAllocateResource routine is obsolete, but is exported to support existing driver binaries. Use ExAllocateFromNPagedLookasideList and ExInitializeResourceLite instead.") 00436 NTKERNELAPI 00437 PERESOURCE 00438 NTAPI 00439 FsRtlAllocateResource(VOID); 00440 00441 _IRQL_requires_max_(APC_LEVEL) 00442 NTKERNELAPI 00443 VOID 00444 NTAPI 00445 FsRtlInitializeLargeMcb( 00446 _Out_ PLARGE_MCB Mcb, 00447 _In_ POOL_TYPE PoolType); 00448 00449 _IRQL_requires_max_(APC_LEVEL) 00450 NTKERNELAPI 00451 VOID 00452 NTAPI 00453 FsRtlUninitializeLargeMcb( 00454 _Inout_ PLARGE_MCB Mcb); 00455 00456 _IRQL_requires_max_(APC_LEVEL) 00457 NTKERNELAPI 00458 VOID 00459 NTAPI 00460 FsRtlResetLargeMcb( 00461 _Inout_ PLARGE_MCB Mcb, 00462 _In_ BOOLEAN SelfSynchronized); 00463 00464 _IRQL_requires_max_(APC_LEVEL) 00465 NTKERNELAPI 00466 VOID 00467 NTAPI 00468 FsRtlTruncateLargeMcb( 00469 _Inout_ PLARGE_MCB Mcb, 00470 _In_ LONGLONG Vbn); 00471 00472 _Must_inspect_result_ 00473 _IRQL_requires_max_(APC_LEVEL) 00474 NTKERNELAPI 00475 BOOLEAN 00476 NTAPI 00477 FsRtlAddLargeMcbEntry( 00478 _Inout_ PLARGE_MCB Mcb, 00479 _In_ LONGLONG Vbn, 00480 _In_ LONGLONG Lbn, 00481 _In_ LONGLONG SectorCount); 00482 00483 _IRQL_requires_max_(APC_LEVEL) 00484 NTKERNELAPI 00485 VOID 00486 NTAPI 00487 FsRtlRemoveLargeMcbEntry( 00488 _Inout_ PLARGE_MCB Mcb, 00489 _In_ LONGLONG Vbn, 00490 _In_ LONGLONG SectorCount); 00491 00492 _IRQL_requires_max_(APC_LEVEL) 00493 NTKERNELAPI 00494 BOOLEAN 00495 NTAPI 00496 FsRtlLookupLargeMcbEntry( 00497 _In_ PLARGE_MCB Mcb, 00498 _In_ LONGLONG Vbn, 00499 _Out_opt_ PLONGLONG Lbn, 00500 _Out_opt_ PLONGLONG SectorCountFromLbn, 00501 _Out_opt_ PLONGLONG StartingLbn, 00502 _Out_opt_ PLONGLONG SectorCountFromStartingLbn, 00503 _Out_opt_ PULONG Index); 00504 00505 _IRQL_requires_max_(APC_LEVEL) 00506 NTKERNELAPI 00507 BOOLEAN 00508 NTAPI 00509 FsRtlLookupLastLargeMcbEntry( 00510 _In_ PLARGE_MCB Mcb, 00511 _Out_ PLONGLONG Vbn, 00512 _Out_ PLONGLONG Lbn); 00513 00514 _IRQL_requires_max_(APC_LEVEL) 00515 NTKERNELAPI 00516 BOOLEAN 00517 NTAPI 00518 FsRtlLookupLastLargeMcbEntryAndIndex( 00519 _In_ PLARGE_MCB OpaqueMcb, 00520 _Out_ PLONGLONG LargeVbn, 00521 _Out_ PLONGLONG LargeLbn, 00522 _Out_ PULONG Index); 00523 00524 _IRQL_requires_max_(APC_LEVEL) 00525 NTKERNELAPI 00526 ULONG 00527 NTAPI 00528 FsRtlNumberOfRunsInLargeMcb( 00529 _In_ PLARGE_MCB Mcb); 00530 00531 _Must_inspect_result_ 00532 _IRQL_requires_max_(APC_LEVEL) 00533 NTKERNELAPI 00534 BOOLEAN 00535 NTAPI 00536 FsRtlGetNextLargeMcbEntry( 00537 _In_ PLARGE_MCB Mcb, 00538 _In_ ULONG RunIndex, 00539 _Out_ PLONGLONG Vbn, 00540 _Out_ PLONGLONG Lbn, 00541 _Out_ PLONGLONG SectorCount); 00542 00543 _Must_inspect_result_ 00544 _IRQL_requires_max_(APC_LEVEL) 00545 NTKERNELAPI 00546 BOOLEAN 00547 NTAPI 00548 FsRtlSplitLargeMcb( 00549 _Inout_ PLARGE_MCB Mcb, 00550 _In_ LONGLONG Vbn, 00551 _In_ LONGLONG Amount); 00552 00553 _IRQL_requires_max_(APC_LEVEL) 00554 __drv_preferredFunction(FsRtlInitializeLargeMcb, "Obsolete") 00555 NTKERNELAPI 00556 VOID 00557 NTAPI 00558 FsRtlInitializeMcb( 00559 _Out_ PMCB Mcb, 00560 _In_ POOL_TYPE PoolType); 00561 00562 _IRQL_requires_max_(APC_LEVEL) 00563 NTKERNELAPI 00564 VOID 00565 NTAPI 00566 FsRtlUninitializeMcb( 00567 _Inout_ PMCB Mcb); 00568 00569 _IRQL_requires_max_(APC_LEVEL) 00570 NTKERNELAPI 00571 VOID 00572 NTAPI 00573 FsRtlTruncateMcb( 00574 _Inout_ PMCB Mcb, 00575 _In_ VBN Vbn); 00576 00577 _IRQL_requires_max_(APC_LEVEL) 00578 NTKERNELAPI 00579 BOOLEAN 00580 NTAPI 00581 FsRtlAddMcbEntry( 00582 _Inout_ PMCB Mcb, 00583 _In_ VBN Vbn, 00584 _In_ LBN Lbn, 00585 _In_ ULONG SectorCount); 00586 00587 _IRQL_requires_max_(APC_LEVEL) 00588 NTKERNELAPI 00589 VOID 00590 NTAPI 00591 FsRtlRemoveMcbEntry( 00592 _Inout_ PMCB Mcb, 00593 _In_ VBN Vbn, 00594 _In_ ULONG SectorCount); 00595 00596 _IRQL_requires_max_(APC_LEVEL) 00597 NTKERNELAPI 00598 BOOLEAN 00599 NTAPI 00600 FsRtlLookupMcbEntry( 00601 _In_ PMCB Mcb, 00602 _In_ VBN Vbn, 00603 _Out_ PLBN Lbn, 00604 _Out_opt_ PULONG SectorCount, 00605 _Out_ PULONG Index); 00606 00607 _IRQL_requires_max_(APC_LEVEL) 00608 NTKERNELAPI 00609 BOOLEAN 00610 NTAPI 00611 FsRtlLookupLastMcbEntry( 00612 _In_ PMCB Mcb, 00613 _Out_ PVBN Vbn, 00614 _Out_ PLBN Lbn); 00615 00616 _IRQL_requires_max_(APC_LEVEL) 00617 NTKERNELAPI 00618 ULONG 00619 NTAPI 00620 FsRtlNumberOfRunsInMcb( 00621 _In_ PMCB Mcb); 00622 00623 _Must_inspect_result_ 00624 _IRQL_requires_max_(APC_LEVEL) 00625 NTKERNELAPI 00626 BOOLEAN 00627 NTAPI 00628 FsRtlGetNextMcbEntry( 00629 _In_ PMCB Mcb, 00630 _In_ ULONG RunIndex, 00631 _Out_ PVBN Vbn, 00632 _Out_ PLBN Lbn, 00633 _Out_ PULONG SectorCount); 00634 00635 _IRQL_requires_max_(PASSIVE_LEVEL) 00636 NTKERNELAPI 00637 NTSTATUS 00638 NTAPI 00639 FsRtlBalanceReads( 00640 _In_ PDEVICE_OBJECT TargetDevice); 00641 00642 _IRQL_requires_max_(APC_LEVEL) 00643 NTKERNELAPI 00644 VOID 00645 NTAPI 00646 FsRtlInitializeOplock( 00647 _Inout_ POPLOCK Oplock); 00648 00649 _IRQL_requires_max_(APC_LEVEL) 00650 NTKERNELAPI 00651 VOID 00652 NTAPI 00653 FsRtlUninitializeOplock( 00654 _Inout_ POPLOCK Oplock); 00655 00656 _Must_inspect_result_ 00657 _IRQL_requires_max_(APC_LEVEL) 00658 NTKERNELAPI 00659 NTSTATUS 00660 NTAPI 00661 FsRtlOplockFsctrl( 00662 _In_ POPLOCK Oplock, 00663 _In_ PIRP Irp, 00664 _In_ ULONG OpenCount); 00665 00666 _When_(CompletionRoutine != NULL, _Must_inspect_result_) 00667 _IRQL_requires_max_(APC_LEVEL) 00668 NTKERNELAPI 00669 NTSTATUS 00670 NTAPI 00671 FsRtlCheckOplock( 00672 _In_ POPLOCK Oplock, 00673 _In_ PIRP Irp, 00674 _In_opt_ PVOID Context, 00675 _In_opt_ POPLOCK_WAIT_COMPLETE_ROUTINE CompletionRoutine, 00676 _In_opt_ POPLOCK_FS_PREPOST_IRP PostIrpRoutine); 00677 00678 _Must_inspect_result_ 00679 _IRQL_requires_max_(APC_LEVEL) 00680 NTKERNELAPI 00681 BOOLEAN 00682 NTAPI 00683 FsRtlOplockIsFastIoPossible( 00684 _In_ POPLOCK Oplock); 00685 00686 _Must_inspect_result_ 00687 _IRQL_requires_max_(APC_LEVEL) 00688 NTKERNELAPI 00689 BOOLEAN 00690 NTAPI 00691 FsRtlCurrentBatchOplock( 00692 _In_ POPLOCK Oplock); 00693 00694 _IRQL_requires_max_(APC_LEVEL) 00695 NTKERNELAPI 00696 NTSTATUS 00697 NTAPI 00698 FsRtlNotifyVolumeEvent( 00699 _In_ PFILE_OBJECT FileObject, 00700 _In_ ULONG EventCode); 00701 00702 _IRQL_requires_max_(APC_LEVEL) 00703 NTKERNELAPI 00704 VOID 00705 NTAPI 00706 FsRtlNotifyInitializeSync( 00707 _In_ PNOTIFY_SYNC *NotifySync); 00708 00709 _IRQL_requires_max_(APC_LEVEL) 00710 NTKERNELAPI 00711 VOID 00712 NTAPI 00713 FsRtlNotifyUninitializeSync( 00714 _In_ PNOTIFY_SYNC *NotifySync); 00715 00716 _IRQL_requires_max_(PASSIVE_LEVEL) 00717 NTKERNELAPI 00718 VOID 00719 NTAPI 00720 FsRtlNotifyFullChangeDirectory( 00721 _In_ PNOTIFY_SYNC NotifySync, 00722 _In_ PLIST_ENTRY NotifyList, 00723 _In_ PVOID FsContext, 00724 _In_ PSTRING FullDirectoryName, 00725 _In_ BOOLEAN WatchTree, 00726 _In_ BOOLEAN IgnoreBuffer, 00727 _In_ ULONG CompletionFilter, 00728 _In_opt_ PIRP NotifyIrp, 00729 _In_opt_ PCHECK_FOR_TRAVERSE_ACCESS TraverseCallback, 00730 _In_opt_ PSECURITY_SUBJECT_CONTEXT SubjectContext); 00731 00732 _IRQL_requires_max_(PASSIVE_LEVEL) 00733 NTKERNELAPI 00734 VOID 00735 NTAPI 00736 FsRtlNotifyFilterReportChange( 00737 _In_ PNOTIFY_SYNC NotifySync, 00738 _In_ PLIST_ENTRY NotifyList, 00739 _In_ PSTRING FullTargetName, 00740 _In_ USHORT TargetNameOffset, 00741 _In_opt_ PSTRING StreamName, 00742 _In_opt_ PSTRING NormalizedParentName, 00743 _In_ ULONG FilterMatch, 00744 _In_ ULONG Action, 00745 _In_opt_ PVOID TargetContext, 00746 _In_opt_ PVOID FilterContext); 00747 00748 _IRQL_requires_max_(PASSIVE_LEVEL) 00749 NTKERNELAPI 00750 VOID 00751 NTAPI 00752 FsRtlNotifyFullReportChange( 00753 _In_ PNOTIFY_SYNC NotifySync, 00754 _In_ PLIST_ENTRY NotifyList, 00755 _In_ PSTRING FullTargetName, 00756 _In_ USHORT TargetNameOffset, 00757 _In_opt_ PSTRING StreamName, 00758 _In_opt_ PSTRING NormalizedParentName, 00759 _In_ ULONG FilterMatch, 00760 _In_ ULONG Action, 00761 _In_opt_ PVOID TargetContext); 00762 00763 _IRQL_requires_max_(APC_LEVEL) 00764 NTKERNELAPI 00765 VOID 00766 NTAPI 00767 FsRtlNotifyCleanup( 00768 _In_ PNOTIFY_SYNC NotifySync, 00769 _In_ PLIST_ENTRY NotifyList, 00770 _In_ PVOID FsContext); 00771 00772 _IRQL_requires_max_(PASSIVE_LEVEL) 00773 NTKERNELAPI 00774 VOID 00775 NTAPI 00776 FsRtlDissectName( 00777 _In_ UNICODE_STRING Name, 00778 _Out_ PUNICODE_STRING FirstPart, 00779 _Out_ PUNICODE_STRING RemainingPart); 00780 00781 _Must_inspect_result_ 00782 _IRQL_requires_max_(PASSIVE_LEVEL) 00783 NTKERNELAPI 00784 BOOLEAN 00785 NTAPI 00786 FsRtlDoesNameContainWildCards( 00787 _In_ PUNICODE_STRING Name); 00788 00789 _Must_inspect_result_ 00790 _IRQL_requires_max_(PASSIVE_LEVEL) 00791 NTKERNELAPI 00792 BOOLEAN 00793 NTAPI 00794 FsRtlAreNamesEqual( 00795 _In_ PCUNICODE_STRING Name1, 00796 _In_ PCUNICODE_STRING Name2, 00797 _In_ BOOLEAN IgnoreCase, 00798 _In_reads_opt_(0x10000) PCWCH UpcaseTable); 00799 00800 _Must_inspect_result_ 00801 _IRQL_requires_max_(PASSIVE_LEVEL) 00802 NTKERNELAPI 00803 BOOLEAN 00804 NTAPI 00805 FsRtlIsNameInExpression( 00806 _In_ PUNICODE_STRING Expression, 00807 _In_ PUNICODE_STRING Name, 00808 _In_ BOOLEAN IgnoreCase, 00809 _In_opt_ PWCHAR UpcaseTable); 00810 00811 _IRQL_requires_max_(DISPATCH_LEVEL) 00812 NTKERNELAPI 00813 VOID 00814 NTAPI 00815 FsRtlPostPagingFileStackOverflow( 00816 _In_ PVOID Context, 00817 _In_ PKEVENT Event, 00818 _In_ PFSRTL_STACK_OVERFLOW_ROUTINE StackOverflowRoutine); 00819 00820 _IRQL_requires_max_(DISPATCH_LEVEL) 00821 NTKERNELAPI 00822 VOID 00823 NTAPI 00824 FsRtlPostStackOverflow ( 00825 _In_ PVOID Context, 00826 _In_ PKEVENT Event, 00827 _In_ PFSRTL_STACK_OVERFLOW_ROUTINE StackOverflowRoutine); 00828 00829 _Must_inspect_result_ 00830 _IRQL_requires_max_(PASSIVE_LEVEL) 00831 NTKERNELAPI 00832 NTSTATUS 00833 NTAPI 00834 FsRtlRegisterUncProvider( 00835 _Out_ PHANDLE MupHandle, 00836 _In_ PUNICODE_STRING RedirectorDeviceName, 00837 _In_ BOOLEAN MailslotsSupported); 00838 00839 _IRQL_requires_max_(PASSIVE_LEVEL) 00840 NTKERNELAPI 00841 VOID 00842 NTAPI 00843 FsRtlDeregisterUncProvider( 00844 _In_ HANDLE Handle); 00845 00846 _IRQL_requires_max_(APC_LEVEL) 00847 NTKERNELAPI 00848 VOID 00849 NTAPI 00850 FsRtlTeardownPerStreamContexts( 00851 _In_ PFSRTL_ADVANCED_FCB_HEADER AdvancedHeader); 00852 00853 _Must_inspect_result_ 00854 _IRQL_requires_max_(APC_LEVEL) 00855 NTKERNELAPI 00856 NTSTATUS 00857 NTAPI 00858 FsRtlCreateSectionForDataScan( 00859 _Out_ PHANDLE SectionHandle, 00860 _Outptr_ PVOID *SectionObject, 00861 _Out_opt_ PLARGE_INTEGER SectionFileSize, 00862 _In_ PFILE_OBJECT FileObject, 00863 _In_ ACCESS_MASK DesiredAccess, 00864 _In_opt_ POBJECT_ATTRIBUTES ObjectAttributes, 00865 _In_opt_ PLARGE_INTEGER MaximumSize, 00866 _In_ ULONG SectionPageProtection, 00867 _In_ ULONG AllocationAttributes, 00868 _In_ ULONG Flags); 00869 00870 #endif /* (NTDDI_VERSION >= NTDDI_WIN2K) */ 00871 00872 #if (NTDDI_VERSION >= NTDDI_WINXP) 00873 00874 _IRQL_requires_max_(PASSIVE_LEVEL) 00875 NTKERNELAPI 00876 VOID 00877 NTAPI 00878 FsRtlNotifyFilterChangeDirectory( 00879 _In_ PNOTIFY_SYNC NotifySync, 00880 _In_ PLIST_ENTRY NotifyList, 00881 _In_ PVOID FsContext, 00882 _In_ PSTRING FullDirectoryName, 00883 _In_ BOOLEAN WatchTree, 00884 _In_ BOOLEAN IgnoreBuffer, 00885 _In_ ULONG CompletionFilter, 00886 _In_opt_ PIRP NotifyIrp, 00887 _In_opt_ PCHECK_FOR_TRAVERSE_ACCESS TraverseCallback, 00888 _In_opt_ PSECURITY_SUBJECT_CONTEXT SubjectContext, 00889 _In_opt_ PFILTER_REPORT_CHANGE FilterCallback); 00890 00891 _Must_inspect_result_ 00892 _IRQL_requires_max_(APC_LEVEL) 00893 NTKERNELAPI 00894 NTSTATUS 00895 NTAPI 00896 FsRtlInsertPerStreamContext( 00897 _In_ PFSRTL_ADVANCED_FCB_HEADER PerStreamContext, 00898 _In_ PFSRTL_PER_STREAM_CONTEXT Ptr); 00899 00900 _Must_inspect_result_ 00901 _IRQL_requires_max_(APC_LEVEL) 00902 NTKERNELAPI 00903 PFSRTL_PER_STREAM_CONTEXT 00904 NTAPI 00905 FsRtlLookupPerStreamContextInternal( 00906 _In_ PFSRTL_ADVANCED_FCB_HEADER StreamContext, 00907 _In_opt_ PVOID OwnerId, 00908 _In_opt_ PVOID InstanceId); 00909 00910 _Must_inspect_result_ 00911 _IRQL_requires_max_(APC_LEVEL) 00912 NTKERNELAPI 00913 PFSRTL_PER_STREAM_CONTEXT 00914 NTAPI 00915 FsRtlRemovePerStreamContext( 00916 _In_ PFSRTL_ADVANCED_FCB_HEADER StreamContext, 00917 _In_opt_ PVOID OwnerId, 00918 _In_opt_ PVOID InstanceId); 00919 00920 NTKERNELAPI 00921 VOID 00922 NTAPI 00923 FsRtlIncrementCcFastReadNotPossible( 00924 VOID); 00925 00926 NTKERNELAPI 00927 VOID 00928 NTAPI 00929 FsRtlIncrementCcFastReadWait(VOID); 00930 00931 NTKERNELAPI 00932 VOID 00933 NTAPI 00934 FsRtlIncrementCcFastReadNoWait(VOID); 00935 00936 NTKERNELAPI 00937 VOID 00938 NTAPI 00939 FsRtlIncrementCcFastReadResourceMiss(VOID); 00940 00941 _IRQL_requires_max_(APC_LEVEL) 00942 NTKERNELAPI 00943 LOGICAL 00944 NTAPI 00945 FsRtlIsPagingFile( 00946 _In_ PFILE_OBJECT FileObject); 00947 00948 #endif /* (NTDDI_VERSION >= NTDDI_WINXP) */ 00949 00950 #if (NTDDI_VERSION >= NTDDI_WS03) 00951 00952 _IRQL_requires_max_(APC_LEVEL) 00953 NTKERNELAPI 00954 VOID 00955 NTAPI 00956 FsRtlInitializeBaseMcb( 00957 _Out_ PBASE_MCB Mcb, 00958 _In_ POOL_TYPE PoolType); 00959 00960 _IRQL_requires_max_(APC_LEVEL) 00961 NTKERNELAPI 00962 VOID 00963 NTAPI 00964 FsRtlUninitializeBaseMcb( 00965 _In_ PBASE_MCB Mcb); 00966 00967 _IRQL_requires_max_(APC_LEVEL) 00968 NTKERNELAPI 00969 VOID 00970 NTAPI 00971 FsRtlResetBaseMcb( 00972 _Out_ PBASE_MCB Mcb); 00973 00974 _IRQL_requires_max_(APC_LEVEL) 00975 NTKERNELAPI 00976 VOID 00977 NTAPI 00978 FsRtlTruncateBaseMcb( 00979 _Inout_ PBASE_MCB Mcb, 00980 _In_ LONGLONG Vbn); 00981 00982 _IRQL_requires_max_(APC_LEVEL) 00983 NTKERNELAPI 00984 BOOLEAN 00985 NTAPI 00986 FsRtlAddBaseMcbEntry( 00987 _Inout_ PBASE_MCB Mcb, 00988 _In_ LONGLONG Vbn, 00989 _In_ LONGLONG Lbn, 00990 _In_ LONGLONG SectorCount); 00991 00992 _IRQL_requires_max_(APC_LEVEL) 00993 NTKERNELAPI 00994 BOOLEAN 00995 NTAPI 00996 FsRtlRemoveBaseMcbEntry( 00997 _Inout_ PBASE_MCB Mcb, 00998 _In_ LONGLONG Vbn, 00999 _In_ LONGLONG SectorCount); 01000 01001 _IRQL_requires_max_(APC_LEVEL) 01002 NTKERNELAPI 01003 BOOLEAN 01004 NTAPI 01005 FsRtlLookupBaseMcbEntry( 01006 _In_ PBASE_MCB Mcb, 01007 _In_ LONGLONG Vbn, 01008 _Out_opt_ PLONGLONG Lbn, 01009 _Out_opt_ PLONGLONG SectorCountFromLbn, 01010 _Out_opt_ PLONGLONG StartingLbn, 01011 _Out_opt_ PLONGLONG SectorCountFromStartingLbn, 01012 _Out_opt_ PULONG Index); 01013 01014 _IRQL_requires_max_(APC_LEVEL) 01015 NTKERNELAPI 01016 BOOLEAN 01017 NTAPI 01018 FsRtlLookupLastBaseMcbEntry( 01019 _In_ PBASE_MCB Mcb, 01020 _Out_ PLONGLONG Vbn, 01021 _Out_ PLONGLONG Lbn); 01022 01023 _IRQL_requires_max_(APC_LEVEL) 01024 NTKERNELAPI 01025 BOOLEAN 01026 NTAPI 01027 FsRtlLookupLastBaseMcbEntryAndIndex( 01028 _In_ PBASE_MCB OpaqueMcb, 01029 _Inout_ PLONGLONG LargeVbn, 01030 _Inout_ PLONGLONG LargeLbn, 01031 _Inout_ PULONG Index); 01032 01033 _IRQL_requires_max_(APC_LEVEL) 01034 NTKERNELAPI 01035 ULONG 01036 NTAPI 01037 FsRtlNumberOfRunsInBaseMcb( 01038 _In_ PBASE_MCB Mcb); 01039 01040 _IRQL_requires_max_(APC_LEVEL) 01041 NTKERNELAPI 01042 BOOLEAN 01043 NTAPI 01044 FsRtlGetNextBaseMcbEntry( 01045 _In_ PBASE_MCB Mcb, 01046 _In_ ULONG RunIndex, 01047 _Out_ PLONGLONG Vbn, 01048 _Out_ PLONGLONG Lbn, 01049 _Out_ PLONGLONG SectorCount); 01050 01051 _IRQL_requires_max_(APC_LEVEL) 01052 NTKERNELAPI 01053 BOOLEAN 01054 NTAPI 01055 FsRtlSplitBaseMcb( 01056 _Inout_ PBASE_MCB Mcb, 01057 _In_ LONGLONG Vbn, 01058 _In_ LONGLONG Amount); 01059 01060 #endif /* (NTDDI_VERSION >= NTDDI_WS03) */ 01061 01062 #if (NTDDI_VERSION >= NTDDI_VISTA) 01063 01064 _When_(!Flags & MCB_FLAG_RAISE_ON_ALLOCATION_FAILURE, _Must_inspect_result_) 01065 _IRQL_requires_max_(APC_LEVEL) 01066 BOOLEAN 01067 NTAPI 01068 FsRtlInitializeBaseMcbEx( 01069 _Out_ PBASE_MCB Mcb, 01070 _In_ POOL_TYPE PoolType, 01071 _In_ USHORT Flags); 01072 01073 _Must_inspect_result_ 01074 _IRQL_requires_max_(APC_LEVEL) 01075 NTSTATUS 01076 NTAPI 01077 FsRtlAddBaseMcbEntryEx( 01078 _Inout_ PBASE_MCB Mcb, 01079 _In_ LONGLONG Vbn, 01080 _In_ LONGLONG Lbn, 01081 _In_ LONGLONG SectorCount); 01082 01083 _Must_inspect_result_ 01084 _IRQL_requires_max_(APC_LEVEL) 01085 NTKERNELAPI 01086 BOOLEAN 01087 NTAPI 01088 FsRtlCurrentOplock( 01089 _In_ POPLOCK Oplock); 01090 01091 _Must_inspect_result_ 01092 _IRQL_requires_max_(APC_LEVEL) 01093 NTKERNELAPI 01094 NTSTATUS 01095 NTAPI 01096 FsRtlOplockBreakToNone( 01097 _Inout_ POPLOCK Oplock, 01098 _In_opt_ PIO_STACK_LOCATION IrpSp, 01099 _In_ PIRP Irp, 01100 _In_opt_ PVOID Context, 01101 _In_opt_ POPLOCK_WAIT_COMPLETE_ROUTINE CompletionRoutine, 01102 _In_opt_ POPLOCK_FS_PREPOST_IRP PostIrpRoutine); 01103 01104 _IRQL_requires_max_(DISPATCH_LEVEL) 01105 NTKERNELAPI 01106 NTSTATUS 01107 NTAPI 01108 FsRtlNotifyVolumeEventEx( 01109 _In_ PFILE_OBJECT FileObject, 01110 _In_ ULONG EventCode, 01111 _In_ PTARGET_DEVICE_CUSTOM_NOTIFICATION Event); 01112 01113 _IRQL_requires_max_(APC_LEVEL) 01114 NTKERNELAPI 01115 VOID 01116 NTAPI 01117 FsRtlNotifyCleanupAll( 01118 _In_ PNOTIFY_SYNC NotifySync, 01119 _In_ PLIST_ENTRY NotifyList); 01120 01121 _Must_inspect_result_ 01122 _IRQL_requires_max_(PASSIVE_LEVEL) 01123 NTSTATUS 01124 NTAPI 01125 FsRtlRegisterUncProviderEx( 01126 _Out_ PHANDLE MupHandle, 01127 _In_ PUNICODE_STRING RedirDevName, 01128 _In_ PDEVICE_OBJECT DeviceObject, 01129 _In_ ULONG Flags); 01130 01131 _Must_inspect_result_ 01132 _When_(Irp!=NULL, _IRQL_requires_max_(PASSIVE_LEVEL)) 01133 _When_(Irp==NULL, _IRQL_requires_max_(APC_LEVEL)) 01134 NTKERNELAPI 01135 NTSTATUS 01136 NTAPI 01137 FsRtlCancellableWaitForSingleObject( 01138 _In_ PVOID Object, 01139 _In_opt_ PLARGE_INTEGER Timeout, 01140 _In_opt_ PIRP Irp); 01141 01142 _Must_inspect_result_ 01143 _When_(Irp != NULL, _IRQL_requires_max_(PASSIVE_LEVEL)) 01144 _When_(Irp == NULL, _IRQL_requires_max_(APC_LEVEL)) 01145 NTKERNELAPI 01146 NTSTATUS 01147 NTAPI 01148 FsRtlCancellableWaitForMultipleObjects( 01149 _In_ ULONG Count, 01150 _In_reads_(Count) PVOID ObjectArray[], 01151 _In_ WAIT_TYPE WaitType, 01152 _In_opt_ PLARGE_INTEGER Timeout, 01153 _In_opt_ PKWAIT_BLOCK WaitBlockArray, 01154 _In_opt_ PIRP Irp); 01155 01156 _Must_inspect_result_ 01157 _IRQL_requires_max_(APC_LEVEL) 01158 NTKERNELAPI 01159 NTSTATUS 01160 NTAPI 01161 FsRtlMupGetProviderInfoFromFileObject( 01162 _In_ PFILE_OBJECT pFileObject, 01163 _In_ ULONG Level, 01164 _Out_writes_bytes_(*pBufferSize) PVOID pBuffer, 01165 _Inout_ PULONG pBufferSize); 01166 01167 _Must_inspect_result_ 01168 _IRQL_requires_max_(APC_LEVEL) 01169 NTKERNELAPI 01170 NTSTATUS 01171 NTAPI 01172 FsRtlMupGetProviderIdFromName( 01173 _In_ PUNICODE_STRING pProviderName, 01174 _Out_ PULONG32 pProviderId); 01175 01176 NTKERNELAPI 01177 VOID 01178 NTAPI 01179 FsRtlIncrementCcFastMdlReadWait(VOID); 01180 01181 _Must_inspect_result_ 01182 _IRQL_requires_max_(PASSIVE_LEVEL) 01183 NTKERNELAPI 01184 NTSTATUS 01185 NTAPI 01186 FsRtlValidateReparsePointBuffer( 01187 _In_ ULONG BufferLength, 01188 _In_reads_bytes_(BufferLength) PREPARSE_DATA_BUFFER ReparseBuffer); 01189 01190 _Must_inspect_result_ 01191 _IRQL_requires_max_(PASSIVE_LEVEL) 01192 NTKERNELAPI 01193 NTSTATUS 01194 NTAPI 01195 FsRtlRemoveDotsFromPath( 01196 _Inout_updates_bytes_(PathLength) PWSTR OriginalString, 01197 _In_ USHORT PathLength, 01198 _Out_ USHORT *NewLength); 01199 01200 _Must_inspect_result_ 01201 _IRQL_requires_max_(APC_LEVEL) 01202 NTKERNELAPI 01203 NTSTATUS 01204 NTAPI 01205 FsRtlAllocateExtraCreateParameterList( 01206 _In_ FSRTL_ALLOCATE_ECPLIST_FLAGS Flags, 01207 _Outptr_ PECP_LIST *EcpList); 01208 01209 _IRQL_requires_max_(APC_LEVEL) 01210 NTKERNELAPI 01211 VOID 01212 NTAPI 01213 FsRtlFreeExtraCreateParameterList( 01214 _In_ PECP_LIST EcpList); 01215 01216 _Must_inspect_result_ 01217 _IRQL_requires_max_(APC_LEVEL) 01218 NTKERNELAPI 01219 NTSTATUS 01220 NTAPI 01221 FsRtlAllocateExtraCreateParameter( 01222 _In_ LPCGUID EcpType, 01223 _In_ ULONG SizeOfContext, 01224 _In_ FSRTL_ALLOCATE_ECP_FLAGS Flags, 01225 _In_opt_ PFSRTL_EXTRA_CREATE_PARAMETER_CLEANUP_CALLBACK CleanupCallback, 01226 _In_ ULONG PoolTag, 01227 _Outptr_result_bytebuffer_(SizeOfContext) PVOID *EcpContext); 01228 01229 _IRQL_requires_max_(APC_LEVEL) 01230 NTKERNELAPI 01231 VOID 01232 NTAPI 01233 FsRtlFreeExtraCreateParameter( 01234 _In_ PVOID EcpContext); 01235 01236 _When_(Flags|FSRTL_ECP_LOOKASIDE_FLAG_NONPAGED_POOL, _IRQL_requires_max_(DISPATCH_LEVEL)) 01237 _When_(!(Flags|FSRTL_ECP_LOOKASIDE_FLAG_NONPAGED_POOL), _IRQL_requires_max_(APC_LEVEL)) 01238 NTKERNELAPI 01239 VOID 01240 NTAPI 01241 FsRtlInitExtraCreateParameterLookasideList( 01242 _Inout_ PVOID Lookaside, 01243 _In_ FSRTL_ECP_LOOKASIDE_FLAGS Flags, 01244 _In_ SIZE_T Size, 01245 _In_ ULONG Tag); 01246 01247 _When_(Flags|FSRTL_ECP_LOOKASIDE_FLAG_NONPAGED_POOL, _IRQL_requires_max_(DISPATCH_LEVEL)) 01248 _When_(!(Flags|FSRTL_ECP_LOOKASIDE_FLAG_NONPAGED_POOL), _IRQL_requires_max_(APC_LEVEL)) 01249 VOID 01250 NTAPI 01251 FsRtlDeleteExtraCreateParameterLookasideList( 01252 _Inout_ PVOID Lookaside, 01253 _In_ FSRTL_ECP_LOOKASIDE_FLAGS Flags); 01254 01255 _Must_inspect_result_ 01256 _IRQL_requires_max_(APC_LEVEL) 01257 NTKERNELAPI 01258 NTSTATUS 01259 NTAPI 01260 FsRtlAllocateExtraCreateParameterFromLookasideList( 01261 _In_ LPCGUID EcpType, 01262 ULONG SizeOfContext, 01263 _In_ FSRTL_ALLOCATE_ECP_FLAGS Flags, 01264 _In_opt_ PFSRTL_EXTRA_CREATE_PARAMETER_CLEANUP_CALLBACK CleanupCallback, 01265 _Inout_ PVOID LookasideList, 01266 _Outptr_ PVOID *EcpContext); 01267 01268 _Must_inspect_result_ 01269 _IRQL_requires_max_(APC_LEVEL) 01270 NTKERNELAPI 01271 NTSTATUS 01272 NTAPI 01273 FsRtlInsertExtraCreateParameter( 01274 _Inout_ PECP_LIST EcpList, 01275 _Inout_ PVOID EcpContext); 01276 01277 _Must_inspect_result_ 01278 _IRQL_requires_max_(APC_LEVEL) 01279 NTKERNELAPI 01280 NTSTATUS 01281 NTAPI 01282 FsRtlFindExtraCreateParameter( 01283 _In_ PECP_LIST EcpList, 01284 _In_ LPCGUID EcpType, 01285 _Outptr_opt_ PVOID *EcpContext, 01286 _Out_opt_ ULONG *EcpContextSize); 01287 01288 _Must_inspect_result_ 01289 _IRQL_requires_max_(APC_LEVEL) 01290 NTKERNELAPI 01291 NTSTATUS 01292 NTAPI 01293 FsRtlRemoveExtraCreateParameter( 01294 _Inout_ PECP_LIST EcpList, 01295 _In_ LPCGUID EcpType, 01296 _Outptr_ PVOID *EcpContext, 01297 _Out_opt_ ULONG *EcpContextSize); 01298 01299 _Must_inspect_result_ 01300 _IRQL_requires_max_(APC_LEVEL) 01301 NTKERNELAPI 01302 NTSTATUS 01303 NTAPI 01304 FsRtlGetEcpListFromIrp( 01305 _In_ PIRP Irp, 01306 _Outptr_result_maybenull_ PECP_LIST *EcpList); 01307 01308 _Must_inspect_result_ 01309 _IRQL_requires_max_(APC_LEVEL) 01310 NTKERNELAPI 01311 NTSTATUS 01312 NTAPI 01313 FsRtlSetEcpListIntoIrp( 01314 _Inout_ PIRP Irp, 01315 _In_ PECP_LIST EcpList); 01316 01317 _Must_inspect_result_ 01318 _IRQL_requires_max_(APC_LEVEL) 01319 NTKERNELAPI 01320 NTSTATUS 01321 NTAPI 01322 FsRtlGetNextExtraCreateParameter( 01323 _In_ PECP_LIST EcpList, 01324 _In_opt_ PVOID CurrentEcpContext, 01325 _Out_opt_ LPGUID NextEcpType, 01326 _Outptr_opt_ PVOID *NextEcpContext, 01327 _Out_opt_ ULONG *NextEcpContextSize); 01328 01329 _IRQL_requires_max_(APC_LEVEL) 01330 NTKERNELAPI 01331 VOID 01332 NTAPI 01333 FsRtlAcknowledgeEcp( 01334 _In_ PVOID EcpContext); 01335 01336 _IRQL_requires_max_(APC_LEVEL) 01337 NTKERNELAPI 01338 BOOLEAN 01339 NTAPI 01340 FsRtlIsEcpAcknowledged( 01341 _In_ PVOID EcpContext); 01342 01343 _IRQL_requires_max_(APC_LEVEL) 01344 NTKERNELAPI 01345 BOOLEAN 01346 NTAPI 01347 FsRtlIsEcpFromUserMode( 01348 _In_ PVOID EcpContext); 01349 01350 _Must_inspect_result_ 01351 _IRQL_requires_max_(PASSIVE_LEVEL) 01352 NTKERNELAPI 01353 NTSTATUS 01354 NTAPI 01355 FsRtlChangeBackingFileObject( 01356 _In_opt_ PFILE_OBJECT CurrentFileObject, 01357 _In_ PFILE_OBJECT NewFileObject, 01358 _In_ FSRTL_CHANGE_BACKING_TYPE ChangeBackingType, 01359 _In_ ULONG Flags); 01360 01361 _Must_inspect_result_ 01362 _IRQL_requires_max_(APC_LEVEL) 01363 NTKERNELAPI 01364 NTSTATUS 01365 NTAPI 01366 FsRtlLogCcFlushError( 01367 _In_ PUNICODE_STRING FileName, 01368 _In_ PDEVICE_OBJECT DeviceObject, 01369 _In_ PSECTION_OBJECT_POINTERS SectionObjectPointer, 01370 _In_ NTSTATUS FlushError, 01371 _In_ ULONG Flags); 01372 01373 _IRQL_requires_max_(APC_LEVEL) 01374 NTKERNELAPI 01375 BOOLEAN 01376 NTAPI 01377 FsRtlAreVolumeStartupApplicationsComplete(VOID); 01378 01379 NTKERNELAPI 01380 ULONG 01381 NTAPI 01382 FsRtlQueryMaximumVirtualDiskNestingLevel(VOID); 01383 01384 NTKERNELAPI 01385 NTSTATUS 01386 NTAPI 01387 FsRtlGetVirtualDiskNestingLevel( 01388 _In_ PDEVICE_OBJECT DeviceObject, 01389 _Out_ PULONG NestingLevel, 01390 _Out_opt_ PULONG NestingFlags); 01391 01392 #endif /* (NTDDI_VERSION >= NTDDI_VISTA) */ 01393 01394 #if (NTDDI_VERSION >= NTDDI_VISTASP1) 01395 _When_(Flags | OPLOCK_FLAG_BACK_OUT_ATOMIC_OPLOCK, _Must_inspect_result_) 01396 _IRQL_requires_max_(APC_LEVEL) 01397 NTKERNELAPI 01398 NTSTATUS 01399 NTAPI 01400 FsRtlCheckOplockEx( 01401 _In_ POPLOCK Oplock, 01402 _In_ PIRP Irp, 01403 _In_ ULONG Flags, 01404 _In_opt_ PVOID Context, 01405 _In_opt_ POPLOCK_WAIT_COMPLETE_ROUTINE CompletionRoutine, 01406 _In_opt_ POPLOCK_FS_PREPOST_IRP PostIrpRoutine); 01407 01408 #endif 01409 01410 #if (NTDDI_VERSION >= NTDDI_WIN7) 01411 01412 _IRQL_requires_max_(APC_LEVEL) 01413 NTKERNELAPI 01414 BOOLEAN 01415 NTAPI 01416 FsRtlAreThereCurrentOrInProgressFileLocks( 01417 _In_ PFILE_LOCK FileLock); 01418 01419 _Must_inspect_result_ 01420 _IRQL_requires_max_(APC_LEVEL) 01421 NTKERNELAPI 01422 BOOLEAN 01423 NTAPI 01424 FsRtlOplockIsSharedRequest( 01425 _In_ PIRP Irp); 01426 01427 _Must_inspect_result_ 01428 _IRQL_requires_max_(APC_LEVEL) 01429 NTKERNELAPI 01430 NTSTATUS 01431 NTAPI 01432 FsRtlOplockBreakH( 01433 _In_ POPLOCK Oplock, 01434 _In_ PIRP Irp, 01435 _In_ ULONG Flags, 01436 _In_opt_ PVOID Context, 01437 _In_opt_ POPLOCK_WAIT_COMPLETE_ROUTINE CompletionRoutine, 01438 _In_opt_ POPLOCK_FS_PREPOST_IRP PostIrpRoutine); 01439 01440 _IRQL_requires_max_(APC_LEVEL) 01441 NTKERNELAPI 01442 BOOLEAN 01443 NTAPI 01444 FsRtlCurrentOplockH( 01445 _In_ POPLOCK Oplock); 01446 01447 _Must_inspect_result_ 01448 _IRQL_requires_max_(APC_LEVEL) 01449 NTKERNELAPI 01450 NTSTATUS 01451 NTAPI 01452 FsRtlOplockBreakToNoneEx( 01453 _Inout_ POPLOCK Oplock, 01454 _In_ PIRP Irp, 01455 _In_ ULONG Flags, 01456 _In_opt_ PVOID Context, 01457 _In_opt_ POPLOCK_WAIT_COMPLETE_ROUTINE CompletionRoutine, 01458 _In_opt_ POPLOCK_FS_PREPOST_IRP PostIrpRoutine); 01459 01460 _Must_inspect_result_ 01461 _IRQL_requires_max_(APC_LEVEL) 01462 NTKERNELAPI 01463 NTSTATUS 01464 NTAPI 01465 FsRtlOplockFsctrlEx( 01466 _In_ POPLOCK Oplock, 01467 _In_ PIRP Irp, 01468 _In_ ULONG OpenCount, 01469 _In_ ULONG Flags); 01470 01471 _IRQL_requires_max_(APC_LEVEL) 01472 NTKERNELAPI 01473 BOOLEAN 01474 NTAPI 01475 FsRtlOplockKeysEqual( 01476 _In_opt_ PFILE_OBJECT Fo1, 01477 _In_opt_ PFILE_OBJECT Fo2); 01478 01479 NTKERNELAPI 01480 NTSTATUS 01481 NTAPI 01482 FsRtlInitializeExtraCreateParameterList( 01483 _Inout_ PECP_LIST EcpList); 01484 01485 NTKERNELAPI 01486 VOID 01487 NTAPI 01488 FsRtlInitializeExtraCreateParameter( 01489 _Out_ PECP_HEADER Ecp, 01490 _In_ ULONG EcpFlags, 01491 _In_opt_ PFSRTL_EXTRA_CREATE_PARAMETER_CLEANUP_CALLBACK CleanupCallback, 01492 _In_ ULONG TotalSize, 01493 _In_ LPCGUID EcpType, 01494 _In_opt_ PVOID ListAllocatedFrom); 01495 01496 #endif /* (NTDDI_VERSION >= NTDDI_WIN7) */ 01497 01498 _Must_inspect_result_ 01499 _IRQL_requires_max_(APC_LEVEL) 01500 NTKERNELAPI 01501 NTSTATUS 01502 NTAPI 01503 FsRtlInsertPerFileContext( 01504 _In_ PVOID* PerFileContextPointer, 01505 _In_ PFSRTL_PER_FILE_CONTEXT Ptr); 01506 01507 _Must_inspect_result_ 01508 _IRQL_requires_max_(APC_LEVEL) 01509 NTKERNELAPI 01510 PFSRTL_PER_FILE_CONTEXT 01511 NTAPI 01512 FsRtlLookupPerFileContext( 01513 _In_ PVOID* PerFileContextPointer, 01514 _In_opt_ PVOID OwnerId, 01515 _In_opt_ PVOID InstanceId); 01516 01517 _Must_inspect_result_ 01518 _IRQL_requires_max_(APC_LEVEL) 01519 NTKERNELAPI 01520 PFSRTL_PER_FILE_CONTEXT 01521 NTAPI 01522 FsRtlRemovePerFileContext( 01523 _In_ PVOID* PerFileContextPointer, 01524 _In_opt_ PVOID OwnerId, 01525 _In_opt_ PVOID InstanceId); 01526 01527 _IRQL_requires_max_(APC_LEVEL) 01528 NTKERNELAPI 01529 VOID 01530 NTAPI 01531 FsRtlTeardownPerFileContexts( 01532 _In_ PVOID* PerFileContextPointer); 01533 01534 _Must_inspect_result_ 01535 _IRQL_requires_max_(APC_LEVEL) 01536 NTKERNELAPI 01537 NTSTATUS 01538 NTAPI 01539 FsRtlInsertPerFileObjectContext( 01540 _In_ PFILE_OBJECT FileObject, 01541 _In_ PFSRTL_PER_FILEOBJECT_CONTEXT Ptr); 01542 01543 _Must_inspect_result_ 01544 _IRQL_requires_max_(APC_LEVEL) 01545 NTKERNELAPI 01546 PFSRTL_PER_FILEOBJECT_CONTEXT 01547 NTAPI 01548 FsRtlLookupPerFileObjectContext( 01549 _In_ PFILE_OBJECT FileObject, 01550 _In_opt_ PVOID OwnerId, 01551 _In_opt_ PVOID InstanceId); 01552 01553 _Must_inspect_result_ 01554 _IRQL_requires_max_(APC_LEVEL) 01555 NTKERNELAPI 01556 PFSRTL_PER_FILEOBJECT_CONTEXT 01557 NTAPI 01558 FsRtlRemovePerFileObjectContext( 01559 _In_ PFILE_OBJECT FileObject, 01560 _In_opt_ PVOID OwnerId, 01561 _In_opt_ PVOID InstanceId); 01562 01563 #define FsRtlFastLock(A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11) ( \ 01564 FsRtlPrivateLock(A1, A2, A3, A4, A5, A6, A7, A8, A9, NULL, A10, A11) \ 01565 ) 01566 01567 #define FsRtlAreThereCurrentFileLocks(FL) ( \ 01568 ((FL)->FastIoIsQuestionable) \ 01569 ) 01570 01571 #define FsRtlIncrementLockRequestsInProgress(FL) { \ 01572 ASSERT( (FL)->LockRequestsInProgress >= 0 ); \ 01573 (void) \ 01574 (InterlockedIncrement((LONG volatile *)&((FL)->LockRequestsInProgress)));\ 01575 } 01576 01577 #define FsRtlDecrementLockRequestsInProgress(FL) { \ 01578 ASSERT( (FL)->LockRequestsInProgress > 0 ); \ 01579 (void) \ 01580 (InterlockedDecrement((LONG volatile *)&((FL)->LockRequestsInProgress)));\ 01581 } 01582 01583 /* GCC compatible definition, MS one is retarded */ 01584 extern NTKERNELAPI const UCHAR * const FsRtlLegalAnsiCharacterArray; 01585 #define LEGAL_ANSI_CHARACTER_ARRAY FsRtlLegalAnsiCharacterArray 01586 01587 #define FsRtlIsAnsiCharacterWild(C) ( \ 01588 FlagOn(FsRtlLegalAnsiCharacterArray[(UCHAR)(C)], FSRTL_WILD_CHARACTER ) \ 01589 ) 01590 01591 #define FsRtlIsAnsiCharacterLegalFat(C, WILD) ( \ 01592 FlagOn(FsRtlLegalAnsiCharacterArray[(UCHAR)(C)], (FSRTL_FAT_LEGAL) | \ 01593 ((WILD) ? FSRTL_WILD_CHARACTER : 0 )) \ 01594 ) 01595 01596 #define FsRtlIsAnsiCharacterLegalHpfs(C, WILD) ( \ 01597 FlagOn(FsRtlLegalAnsiCharacterArray[(UCHAR)(C)], (FSRTL_HPFS_LEGAL) | \ 01598 ((WILD) ? FSRTL_WILD_CHARACTER : 0 )) \ 01599 ) 01600 01601 #define FsRtlIsAnsiCharacterLegalNtfs(C, WILD) ( \ 01602 FlagOn(FsRtlLegalAnsiCharacterArray[(UCHAR)(C)], (FSRTL_NTFS_LEGAL) | \ 01603 ((WILD) ? FSRTL_WILD_CHARACTER : 0 )) \ 01604 ) 01605 01606 #define FsRtlIsAnsiCharacterLegalNtfsStream(C,WILD_OK) ( \ 01607 FsRtlTestAnsiCharacter((C), TRUE, (WILD_OK), FSRTL_NTFS_STREAM_LEGAL) \ 01608 ) 01609 01610 #define FsRtlIsAnsiCharacterLegal(C,FLAGS) ( \ 01611 FsRtlTestAnsiCharacter((C), TRUE, FALSE, (FLAGS)) \ 01612 ) 01613 01614 #define FsRtlTestAnsiCharacter(C, DEFAULT_RET, WILD_OK, FLAGS) ( \ 01615 ((SCHAR)(C) < 0) ? DEFAULT_RET : \ 01616 FlagOn( LEGAL_ANSI_CHARACTER_ARRAY[(C)], \ 01617 (FLAGS) | \ 01618 ((WILD_OK) ? FSRTL_WILD_CHARACTER : 0) ) \ 01619 ) 01620 01621 #define FsRtlIsLeadDbcsCharacter(DBCS_CHAR) ( \ 01622 (BOOLEAN)((UCHAR)(DBCS_CHAR) < 0x80 ? FALSE : \ 01623 (NLS_MB_CODE_PAGE_TAG && \ 01624 (NLS_OEM_LEAD_BYTE_INFO[(UCHAR)(DBCS_CHAR)] != 0))) \ 01625 ) 01626 01627 #define FsRtlIsUnicodeCharacterWild(C) ( \ 01628 (((C) >= 0x40) ? \ 01629 FALSE : \ 01630 FlagOn(FsRtlLegalAnsiCharacterArray[(C)], FSRTL_WILD_CHARACTER )) \ 01631 ) 01632 01633 #define FsRtlInitPerFileContext( _fc, _owner, _inst, _cb) \ 01634 ((_fc)->OwnerId = (_owner), \ 01635 (_fc)->InstanceId = (_inst), \ 01636 (_fc)->FreeCallback = (_cb)) 01637 01638 #define FsRtlGetPerFileContextPointer(_fo) \ 01639 (FsRtlSupportsPerFileContexts(_fo) ? \ 01640 FsRtlGetPerStreamContextPointer(_fo)->FileContextSupportPointer : \ 01641 NULL) 01642 01643 #define FsRtlSupportsPerFileContexts(_fo) \ 01644 ((FsRtlGetPerStreamContextPointer(_fo) != NULL) && \ 01645 (FsRtlGetPerStreamContextPointer(_fo)->Version >= FSRTL_FCB_HEADER_V1) && \ 01646 (FsRtlGetPerStreamContextPointer(_fo)->FileContextSupportPointer != NULL)) 01647 01648 #define FsRtlSetupAdvancedHeaderEx( _advhdr, _fmutx, _fctxptr ) \ 01649 { \ 01650 FsRtlSetupAdvancedHeader( _advhdr, _fmutx ); \ 01651 if ((_fctxptr) != NULL) { \ 01652 (_advhdr)->FileContextSupportPointer = (_fctxptr); \ 01653 } \ 01654 } 01655 01656 #define FsRtlGetPerStreamContextPointer(FO) ( \ 01657 (PFSRTL_ADVANCED_FCB_HEADER)(FO)->FsContext \ 01658 ) 01659 01660 #define FsRtlInitPerStreamContext(PSC, O, I, FC) ( \ 01661 (PSC)->OwnerId = (O), \ 01662 (PSC)->InstanceId = (I), \ 01663 (PSC)->FreeCallback = (FC) \ 01664 ) 01665 01666 #define FsRtlSupportsPerStreamContexts(FO) ( \ 01667 (BOOLEAN)((NULL != FsRtlGetPerStreamContextPointer(FO) && \ 01668 FlagOn(FsRtlGetPerStreamContextPointer(FO)->Flags2, \ 01669 FSRTL_FLAG2_SUPPORTS_FILTER_CONTEXTS)) \ 01670 ) 01671 01672 #define FsRtlLookupPerStreamContext(_sc, _oid, _iid) \ 01673 (((NULL != (_sc)) && \ 01674 FlagOn((_sc)->Flags2,FSRTL_FLAG2_SUPPORTS_FILTER_CONTEXTS) && \ 01675 !IsListEmpty(&(_sc)->FilterContexts)) ? \ 01676 FsRtlLookupPerStreamContextInternal((_sc), (_oid), (_iid)) : \ 01677 NULL) 01678 01679 _IRQL_requires_max_(APC_LEVEL) 01680 FORCEINLINE 01681 VOID 01682 NTAPI 01683 FsRtlSetupAdvancedHeader( 01684 _In_ PVOID AdvHdr, 01685 _In_ PFAST_MUTEX FMutex ) 01686 { 01687 PFSRTL_ADVANCED_FCB_HEADER localAdvHdr = (PFSRTL_ADVANCED_FCB_HEADER)AdvHdr; 01688 01689 localAdvHdr->Flags |= FSRTL_FLAG_ADVANCED_HEADER; 01690 localAdvHdr->Flags2 |= FSRTL_FLAG2_SUPPORTS_FILTER_CONTEXTS; 01691 #if (NTDDI_VERSION >= NTDDI_VISTA) 01692 localAdvHdr->Version = FSRTL_FCB_HEADER_V1; 01693 #else 01694 localAdvHdr->Version = FSRTL_FCB_HEADER_V0; 01695 #endif 01696 InitializeListHead( &localAdvHdr->FilterContexts ); 01697 if (FMutex != NULL) { 01698 localAdvHdr->FastMutex = FMutex; 01699 } 01700 #if (NTDDI_VERSION >= NTDDI_VISTA) 01701 *((PULONG_PTR)(&localAdvHdr->PushLock)) = 0; 01702 localAdvHdr->FileContextSupportPointer = NULL; 01703 #endif 01704 } 01705 01706 #define FsRtlInitPerFileObjectContext(_fc, _owner, _inst) \ 01707 ((_fc)->OwnerId = (_owner), (_fc)->InstanceId = (_inst)) 01708 01709 #define FsRtlCompleteRequest(IRP,STATUS) { \ 01710 (IRP)->IoStatus.Status = (STATUS); \ 01711 IoCompleteRequest( (IRP), IO_DISK_INCREMENT ); \ 01712 } 01713 $endif (_NTIFS_) Generated on Sun May 27 2012 04:33:23 for ReactOS by
1.7.6.1
|