25 #pragma alloc_text(PAGE, FFSAllocateIrpContext) 26 #pragma alloc_text(PAGE, FFSFreeIrpContext) 27 #pragma alloc_text(PAGE, FFSv1AllocateFcb) 28 #pragma alloc_text(PAGE, FFSv2AllocateFcb) 29 #pragma alloc_text(PAGE, FFSFreeFcb) 30 #pragma alloc_text(PAGE, FFSAllocateMcb) 31 #pragma alloc_text(PAGE, FFSFreeMcb) 32 #pragma alloc_text(PAGE, FFSSearchMcbTree) 33 #pragma alloc_text(PAGE, FFSSearchMcb) 34 #pragma alloc_text(PAGE, FFSGetFullFileName) 35 #pragma alloc_text(PAGE, FFSRefreshMcb) 36 #pragma alloc_text(PAGE, FFSAddMcbNode) 37 #pragma alloc_text(PAGE, FFSDeleteMcbNode) 38 #pragma alloc_text(PAGE, FFSFreeMcbTree) 39 #pragma alloc_text(PAGE, FFSCheckBitmapConsistency) 40 #pragma alloc_text(PAGE, FFSCheckSetBlock) 41 #pragma alloc_text(PAGE, FFSInitializeVcb) 42 #pragma alloc_text(PAGE, FFSFreeCcb) 43 #pragma alloc_text(PAGE, FFSAllocateCcb) 44 #pragma alloc_text(PAGE, FFSFreeVcb) 45 #pragma alloc_text(PAGE, FFSCreateFcbFromMcb) 46 #pragma alloc_text(PAGE, FFSSyncUninitializeCacheMap) 76 if (IrpContext ==
NULL)
122 if (IoStackLocation->
Parameters.MountVolume.Vpb)
125 IoStackLocation->
Parameters.MountVolume.Vpb->RealDevice;
140 #if (_WIN32_WINNT >= 0x0500) 152 #endif //(_WIN32_WINNT >= 0x0500) 196 IrpContext->Identifier.Type = 0;
197 IrpContext->Identifier.Size = 0;
203 IrpContext->Identifier.Type = 0;
204 IrpContext->Identifier.Size = 0;
228 Repinned = &IrpContext->Repinned;
243 Repinned = Repinned->
Next;
270 Repinned = Repinned->
Next;
286 Repinned = &IrpContext->Repinned;
292 while (Repinned !=
NULL)
346 if (Repinned != &IrpContext->Repinned)
350 Saved = Repinned->
Next;
357 Repinned = Repinned->
Next;
373 IrpContext->Irp->IoStatus = RaiseIosb;
424 &
Fcb->FileLockAnchor,
429 Fcb->ReferenceCount = 0;
435 Fcb->AnsiFileName.MaximumLength = (
USHORT)
441 if (!
Fcb->AnsiFileName.Buffer)
449 &(FFSMcb->ShortName));
466 Fcb->dinode1 = dinode1;
468 Fcb->FFSMcb = FFSMcb;
469 FFSMcb->FFSFcb =
Fcb;
480 ULONG Totalblocks = (
Fcb->dinode1->di_blocks);
488 Fcb->SectionObject.DataSectionObject =
NULL;
489 Fcb->SectionObject.SharedCacheMap =
NULL;
490 Fcb->SectionObject.ImageSectionObject =
NULL;
520 if (
Fcb->AnsiFileName.Buffer)
590 &
Fcb->FileLockAnchor,
595 Fcb->ReferenceCount = 0;
601 Fcb->AnsiFileName.MaximumLength = (
USHORT)
607 if (!
Fcb->AnsiFileName.Buffer)
615 &(FFSMcb->ShortName));
632 Fcb->dinode2 = dinode2;
634 Fcb->FFSMcb = FFSMcb;
635 FFSMcb->FFSFcb =
Fcb;
654 Fcb->SectionObject.DataSectionObject =
NULL;
655 Fcb->SectionObject.SharedCacheMap =
NULL;
656 Fcb->SectionObject.ImageSectionObject =
NULL;
686 if (
Fcb->AnsiFileName.Buffer)
841 Ccb->CurrentByteOffset = 0;
843 Ccb->DirectorySearchPattern.Length = 0;
844 Ccb->DirectorySearchPattern.MaximumLength = 0;
845 Ccb->DirectorySearchPattern.Buffer = 0;
863 if (
Ccb->DirectorySearchPattern.Buffer !=
NULL)
901 #define MCB_NUM_SHIFT 0x04 909 "FFSAllocateMcb: CurrDepth=%xh/%xh/%xh FileName=%S\n",
917 while ((
List != &(
Vcb->McbList)) && (Extra > 0))
922 if ((
Mcb->Inode != 2) && (
Mcb->Child ==
NULL) &&
926 Mcb->ShortName.Buffer));
972 Mcb->ShortName.MaximumLength =
Mcb->ShortName.Length + 2;
976 if (!
Mcb->ShortName.Buffer)
1001 if (
Mcb->ShortName.Buffer)
1043 if (
Mcb->ShortName.Buffer)
1145 while(TmpMcb &&
Count < 256)
1208 while ((!bFind) && (
List != &(
Vcb->McbList)))
1213 if (
Mcb->Inode == Inode)
1251 TmpMcb = TmpMcb->
Next;
1298 while (TmpMcb->
Next)
1300 TmpMcb = TmpMcb->
Next;
1345 while (TmpMcb && TmpMcb->
Next != FFSMcb)
1346 TmpMcb = TmpMcb->
Next;
1359 else if (FFSMcb->
Child)
1391 Current = McbTree->
Next;
1395 Next = Current->
Next;
1493 return (!bModified);
1508 for (
i = 0;
i <
Vcb->ffs_groups;
i++)
1514 if (
i ==
Vcb->ffs_groups - 1)
1523 for (
j = 0;
j < InodeBlocks;
j++)
1560 USHORT VolumeLabelLength;
1596 #endif // FFS_READ_ONLY 1630 VcbResourceInitialized =
TRUE;
1636 Vcb->RealDevice =
Vpb->RealDevice;
1637 Vpb->DeviceObject = VolumeDevice;
1645 LabelName.
Buffer =
Vcb->Vpb->VolumeLabel;
1649 VolumeLabelLength = 16;
1651 while((VolumeLabelLength > 0) &&
1652 ((FFSSb->fs_volname[VolumeLabelLength-1] == 0x00) ||
1653 (FFSSb->fs_volname[VolumeLabelLength-1] == 0x20)))
1655 VolumeLabelLength--;
1658 OemName.Buffer = FFSSb->fs_volname;
1660 OemName.Length = VolumeLabelLength;
1670 Vpb->VolumeLabelLength = LabelName.
Length;
1673 Vpb->SerialNumber = ((
ULONG*)FFSSb->fs_id)[0] + ((
ULONG*)FFSSb->fs_id)[1];
1679 Vcb->StreamObj->SectionObjectPointer = &(
Vcb->SectionObject);
1680 Vcb->StreamObj->Vpb =
Vcb->Vpb;
1681 Vcb->StreamObj->ReadAccess =
TRUE;
1684 Vcb->StreamObj->WriteAccess =
TRUE;
1685 Vcb->StreamObj->DeleteAccess =
TRUE;
1689 Vcb->StreamObj->WriteAccess =
TRUE;
1690 Vcb->StreamObj->DeleteAccess =
TRUE;
1693 Vcb->StreamObj->FsContext2 =
NULL;
1694 Vcb->StreamObj->Vpb =
Vcb->Vpb;
1709 NotifySyncInitialized =
TRUE;
1711 Vcb->DeviceObject = VolumeDevice;
1715 Vcb->OpenFileHandleCount = 0;
1717 Vcb->ReferenceCount = 0;
1719 Vcb->ffs_super_block = FFSSb;
1724 Vcb->Header.Resource = &(
Vcb->MainResource);
1725 Vcb->Header.PagingIoResource = &(
Vcb->PagingIoResource);
1727 Vcb->Vpb->SerialNumber =
'PS';
1730 Vcb->DiskGeometry.Cylinders.QuadPart *
1731 Vcb->DiskGeometry.TracksPerCylinder *
1732 Vcb->DiskGeometry.SectorsPerTrack *
1733 Vcb->DiskGeometry.BytesPerSector;
1742 &
Vcb->PartitionInformation,
1745 PartSize =
Vcb->PartitionInformation.PartitionLength.QuadPart;
1749 Vcb->PartitionInformation.StartingOffset.QuadPart = 0;
1751 Vcb->PartitionInformation.PartitionLength.QuadPart =
1754 PartSize = DiskSize;
1759 IoctlSize =
sizeof(
ULONG);
1773 Vcb->ChangeCount = ChangeCount;
1775 Vcb->Header.AllocationSize.QuadPart =
1776 Vcb->Header.FileSize.QuadPart = PartSize;
1778 Vcb->Header.ValidDataLength.QuadPart =
1792 Vcb->Header.AllocationSize.QuadPart;
1802 #if 0 // LoadGroup XXX 1834 Vcb->dwMeta[
i] = dwMeta[
i];
1849 Vcb->dwMeta[
i] = dwMeta[
i];
1861 if (NotifySyncInitialized)
1866 if (
Vcb->ffs_super_block)
1872 if (VcbResourceInitialized)
1908 if (
Vcb->StreamObj->PrivateCacheMap)
1938 if (
Vcb->ffs_super_block)
1970 &UninitializeCompleteEvent);
#define KeGetCurrentIrql()
CACHE_MANAGER_CALLBACKS CacheManagerNoOpCallbacks
#define ExGetCurrentResourceThread()
union _FCB::@703 LongName
BOOLEAN NTAPI CcPurgeCacheSection(IN PSECTION_OBJECT_POINTERS SectionObjectPointer, IN OPTIONAL PLARGE_INTEGER FileOffset, IN ULONG Length, IN BOOLEAN UninitializeCacheMaps)
BOOLEAN FFSDeleteMcbNode(PFFS_VCB Vcb, PFFS_MCB McbTree, PFFS_MCB FFSMcb)
__drv_mustHoldCriticalRegion VOID FFSFreeMcbTree(PFFS_MCB McbTree)
_In_ ULONG _In_ ULONG _In_ ULONG Length
#define FFS_SUPPORT_WRITING
IN PVCB IN VBO IN ULONG OUT PBCB * Bcb
VOID FFSInsertVcb(PFFS_VCB Vcb)
BOOLEAN FFSLoadGroup(IN PFFS_VCB Vcb)
#define IRP_MJ_FLUSH_BUFFERS
#define __drv_mustHoldCriticalRegion
VOID NTAPI CcFlushCache(IN PSECTION_OBJECT_POINTERS SectionObjectPointer, IN OPTIONAL PLARGE_INTEGER FileOffset, IN ULONG Length, OUT OPTIONAL PIO_STATUS_BLOCK IoStatus)
FSRTL_ADVANCED_FCB_HEADER Header
_Must_inspect_result_ __drv_aliasesMem PDEVICE_OBJECT _In_ PDEVICE_OBJECT TargetDevice
VOID NTAPI FsRtlInitializeFileLock(IN PFILE_LOCK FileLock, IN PCOMPLETE_LOCK_IRP_ROUTINE CompleteLockIrpRoutine OPTIONAL, IN PUNLOCK_ROUTINE UnlockRoutine OPTIONAL)
IN BOOLEAN OUT PSTR Buffer
VOID NTAPI CcSetDirtyPinnedData(IN PVOID BcbVoid, IN OPTIONAL PLARGE_INTEGER Lsn)
#define IRP_CONTEXT_FLAG_WRITE_THROUGH
VOID NTAPI FsRtlUninitializeFileLock(IN PFILE_LOCK FileLock)
__drv_mustHoldCriticalRegion VOID FFSFreeVcb(IN PFFS_VCB Vcb)
struct _FFS_IRP_CONTEXT FFS_IRP_CONTEXT
VOID FFSAddMcbNode(PFFS_VCB Vcb, PFFS_MCB Parent, PFFS_MCB Child)
BOOLEAN FFSv2LoadInode(IN PFFS_VCB Vcb, IN ULONG inode, IN PFFSv2_INODE dinode2)
NTSYSAPI void WINAPI RtlInitializeBitMap(PRTL_BITMAP, PULONG, ULONG)
#define IOCTL_DISK_CHECK_VERIFY
VOID NTAPI CcUnpinData(IN PVOID Bcb)
NTSTATUS ExInitializeResourceLite(PULONG res)
NTSTATUS NTAPI ExDeleteResourceLite(IN PERESOURCE Resource)
static HANDLE ULONG_PTR dwData
NPAGED_LOOKASIDE_LIST FFSIrpContextLookasideList
BOOLEAN FFSCheckBitmapConsistency(PFFS_IRP_CONTEXT IrpContext, PFFS_VCB Vcb)
#define IRP_CONTEXT_FLAG_FROM_POOL
#define FFSNormalizeAndRaiseStatus(IRPCONTEXT, STATUS)
#define RtlCheckBit(BMH, BP)
#define FFS_FIRST_DATA_BLOCK
VOID FFSRepinBcb(IN PFFS_IRP_CONTEXT IrpContext, IN PBCB Bcb)
NTSTATUS FFSDiskIoControl(IN PDEVICE_OBJECT DeviceOjbect, IN ULONG IoctlCode, IN PVOID InputBuffer, IN ULONG InputBufferSize, IN OUT PVOID OutputBuffer, IN OUT PULONG OutputBufferSize)
ACPI_PHYSICAL_ADDRESS ACPI_SIZE BOOLEAN Warn BOOLEAN Physical UINT32 ACPI_TABLE_HEADER *OutTableHeader ACPI_TABLE_HEADER **OutTable ACPI_HANDLE UINT32 ACPI_WALK_CALLBACK ACPI_WALK_CALLBACK void void **ReturnValue UINT32 ACPI_BUFFER *RetPathPtr ACPI_OBJECT_HANDLER void *Data ACPI_OBJECT_HANDLER void **Data ACPI_STRING ACPI_OBJECT_LIST ACPI_BUFFER *ReturnObjectBuffer ACPI_DEVICE_INFO **ReturnBuffer ACPI_HANDLE Parent
static CC_FILE_SIZES FileSizes
BOOLEAN NTAPI IoIsOperationSynchronous(IN PIRP Irp)
#define FO_NO_INTERMEDIATE_BUFFERING
#define InsertTailList(ListHead, Entry)
struct _PARTITION_INFORMATION PARTITION_INFORMATION
BOOLEAN FFSCheckSetBlock(PFFS_IRP_CONTEXT IrpContext, PFFS_VCB Vcb, ULONG Block)
struct _FFS_FCB * PFFS_FCB
NTSTATUS NTAPI KeWaitForSingleObject(IN PVOID Object, IN KWAIT_REASON WaitReason, IN KPROCESSOR_MODE WaitMode, IN BOOLEAN Alertable, IN PLARGE_INTEGER Timeout OPTIONAL)
ULONG NTAPI FsRtlNumberOfRunsInLargeMcb(IN PLARGE_MCB Mcb)
PFILE_OBJECT NTAPI CcGetFileObjectFromBcb(PVOID Bcb)
static int Link(const char **args)
#define FFS_CHECKING_BITMAP
BOOLEAN FFSGetFullFileName(PFFS_MCB Mcb, PUNICODE_STRING FileName)
#define VCB_REMOVABLE_MEDIA
__drv_mustHoldCriticalRegion BOOLEAN FFSAddMcbEntry(IN PFFS_VCB Vcb, IN LONGLONG Lba, IN LONGLONG Length)
FORCEINLINE BOOLEAN RemoveEntryList(_In_ PLIST_ENTRY Entry)
BOOLEAN NTAPI ExAcquireResourceExclusiveLite(IN PERESOURCE Resource, IN BOOLEAN Wait)
BOOLEAN NTAPI FsRtlGetNextLargeMcbEntry(IN PLARGE_MCB Mcb, IN ULONG RunIndex, OUT PLONGLONG Vbn, OUT PLONGLONG Lbn, OUT PLONGLONG SectorCount)
BOOLEAN ExceptionInProgress
_In_ PDEVICE_OBJECT DeviceObject
NTSTATUS FFSUnicodeToOEM(IN OUT POEM_STRING Oem, IN PUNICODE_STRING Unicode)
NTFSIDENTIFIER Identifier
VOID FFSRefreshMcb(PFFS_VCB Vcb, PFFS_MCB Mcb)
NPAGED_LOOKASIDE_LIST FFSCcbLookasideList
_Must_inspect_result_ _In_ WDFDEVICE _In_ WDFDEVICE Child
struct _FFS_IRP_CONTEXT * PFFS_IRP_CONTEXT
#define FILE_REMOVABLE_MEDIA
ULONG FFSDataBlocks(PFFS_VCB Vcb, ULONG TotalBlocks)
VOID NTAPI FsRtlInitializeLargeMcb(IN PLARGE_MCB Mcb, IN POOL_TYPE PoolType)
__drv_mustHoldCriticalRegion PFFS_FCB FFSv1AllocateFcb(IN PFFS_VCB Vcb, IN PFFS_MCB FFSMcb, IN PFFSv1_INODE dinode1)
PBCB Bcb[FFS_REPINNED_BCBS_ARRAY_SIZE]
__drv_mustHoldCriticalRegion VOID FFSFreeCcb(IN PFFS_CCB Ccb)
BOOLEAN FFSv1LoadInode(IN PFFS_VCB Vcb, IN ULONG inode, IN PFFSv1_INODE dinode1)
PFLT_MESSAGE_WAITER_QUEUE CONTAINING_RECORD(Csq, DEVICE_EXTENSION, IrpQueue)) -> WaiterQ.mLock) _IRQL_raises_(DISPATCH_LEVEL) VOID NTAPI FltpAcquireMessageWaiterLock(_In_ PIO_CSQ Csq, _Out_ PKIRQL Irql)
_In_ WDFREQUEST _In_ WDFFILEOBJECT FileObject
PFILE_OBJECT NTAPI IoCreateStreamFileObject(IN PFILE_OBJECT FileObject, IN PDEVICE_OBJECT DeviceObject)
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 GLint GLint j
#define FILE_ATTRIBUTE_DIRECTORY
NPAGED_LOOKASIDE_LIST FFSFcbLookasideList
VOID NTAPI CcUnpinRepinnedBcb(IN PVOID Bcb, IN BOOLEAN WriteThrough, OUT PIO_STATUS_BLOCK IoStatus)
#define NT_SUCCESS(StatCode)
VOID FFSUnpinRepinnedBcbs(IN PFFS_IRP_CONTEXT IrpContext)
VOID NTAPI CcInitializeCacheMap(IN PFILE_OBJECT FileObject, IN PCC_FILE_SIZES FileSizes, IN BOOLEAN PinAccess, IN PCACHE_MANAGER_CALLBACKS Callbacks, IN PVOID LazyWriteContext)
struct _FFS_MCB * PFFS_MCB
#define IRP_MJ_FILE_SYSTEM_CONTROL
__drv_mustHoldCriticalRegion VOID FFSFreeFcb(IN PFFS_FCB Fcb)
#define ObDereferenceObject
#define FILE_ATTRIBUTE_READONLY
HRESULT Next([in] ULONG celt, [out, size_is(celt), length_is(*pceltFetched)] STATPROPSETSTG *rgelt, [out] ULONG *pceltFetched)
PIRP NTAPI IoGetTopLevelIrp(VOID)
BOOLEAN NTAPI CcPinRead(IN PFILE_OBJECT FileObject, IN PLARGE_INTEGER FileOffset, IN ULONG Length, IN ULONG Flags, OUT PVOID *Bcb, OUT PVOID *Buffer)
#define STATUS_UNSUCCESSFUL
__drv_mustHoldCriticalRegion VOID FFSFreeMcb(IN PFFS_MCB Mcb)
#define ExAllocatePoolWithTag(hernya, size, tag)
#define FILE_ATTRIBUTE_NORMAL
#define IOCTL_DISK_GET_PARTITION_INFO
ULONG RtlCompareUnicodeString(PUNICODE_STRING s1, PUNICODE_STRING s2, BOOLEAN UpCase)
_Must_inspect_result_ _In_ WDFCMRESLIST List
__drv_mustHoldCriticalRegion PFFS_FCB FFSv2AllocateFcb(IN PFFS_VCB Vcb, IN PFFS_MCB FFSMcb, IN PFFSv2_INODE dinode2)
_Inout_ PFILE_OBJECT _In_ TYPE_OF_OPEN PFCB _In_opt_ PCCB Ccb
LARGE_INTEGER ValidDataLength
ClearFlag(Dirent->Flags, DIRENT_FLAG_NOT_PERSISTENT)
__drv_mustHoldCriticalRegion PFFS_CCB FFSAllocateCcb(VOID)
_In_ ULONG _In_ ULONG Offset
struct _FFS_CCB * PFFS_CCB
__drv_aliasesMem FORCEINLINE PIO_STACK_LOCATION IoGetCurrentIrpStackLocation(_In_ PIRP Irp)
VOID NTAPI IoDeleteDevice(IN PDEVICE_OBJECT DeviceObject)
#define KeInitializeEvent(pEvt, foo, foo2)
LARGE_INTEGER AllocationSize
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 FFSSyncUninitializeCacheMap(IN PFILE_OBJECT FileObject)
#define IRP_CONTEXT_FLAG_FLOPPY
struct _FFS_REPINNED_BCBS * Next
BOOLEAN NTAPI CcUninitializeCacheMap(IN PFILE_OBJECT FileObject, IN OPTIONAL PLARGE_INTEGER TruncateSize, IN OPTIONAL PCACHE_UNINITIALIZE_EVENT UninitializeEvent)
FFS_IDENTIFIER Identifier
NTSYSAPI ULONG NTAPI RtlxUnicodeStringToOemSize(IN PCUNICODE_STRING UnicodeString)
#define InitializeListHead(ListHead)
IN PVCB IN ULONG IN OUT PULONG IN BOOLEAN OUT PLARGE_MCB Mcb
NTSYSAPI void WINAPI RtlSetBits(PRTL_BITMAP, ULONG, ULONG)
VOID NTAPI FsRtlUninitializeLargeMcb(IN PLARGE_MCB Mcb)
PFFS_MCB FFSSearchMcb(PFFS_VCB Vcb, PFFS_MCB Parent, PUNICODE_STRING FileName)
PDEVICE_OBJECT DeviceObject
VOID NTAPI FsRtlNotifyInitializeSync(IN PNOTIFY_SYNC *NotifySync)
NTSTATUS FFSOEMToUnicode(IN OUT PUNICODE_STRING Unicode, IN POEM_STRING Oem)
__in UCHAR __in POWER_STATE __in_opt PVOID __in PIO_STATUS_BLOCK IoStatus
#define IRP_MJ_SET_INFORMATION
__drv_mustHoldCriticalRegion PFFS_IRP_CONTEXT FFSAllocateIrpContext(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
ERESOURCE PagingIoResource
#define RtlZeroMemory(Destination, Length)
#define RtlCopyMemory(Destination, Source, Length)
VOID NTAPI CcRepinBcb(IN PVOID Bcb)
VOID NTAPI ExReleaseResourceForThreadLite(IN PERESOURCE Resource, IN ERESOURCE_THREAD Thread)
VOID NTAPI IoSetHardErrorOrVerifyDevice(IN PIRP Irp, IN PDEVICE_OBJECT DeviceObject)
__drv_mustHoldCriticalRegion PFFS_FCB FFSCreateFcbFromMcb(PFFS_VCB Vcb, PFFS_MCB Mcb)
VOID NTAPI FsRtlNotifyUninitializeSync(IN PNOTIFY_SYNC *NotifySync)
#define FFS_REPINNED_BCBS_ARRAY_SIZE
IN PDCB IN POEM_STRING OemName
struct _NAMED_PIPE_CREATE_PARAMETERS * Parameters
#define FILE_FLOPPY_DISKETTE
VOID FFSRemoveVcb(PFFS_VCB Vcb)
__drv_mustHoldCriticalRegion NTSTATUS FFSInitializeVcb(IN PFFS_IRP_CONTEXT IrpContext, IN PFFS_VCB Vcb, IN PFFS_SUPER_BLOCK FFSSb, IN PDEVICE_OBJECT TargetDevice, IN PDEVICE_OBJECT VolumeDevice, IN PVPB Vpb)
PDEVICE_OBJECT RealDevice
IN OUT PVCB IN PDEVICE_OBJECT IN PVPB Vpb
PAGED_LOOKASIDE_LIST FFSMcbLookasideList
__drv_mustHoldCriticalRegion VOID FFSFreeIrpContext(IN PFFS_IRP_CONTEXT IrpContext)
__drv_mustHoldCriticalRegion PFFS_MCB FFSAllocateMcb(PFFS_VCB Vcb, PUNICODE_STRING FileName, ULONG FileAttr)
#define IRP_MJ_DEVICE_CONTROL
PCONFIGURATION_COMPONENT_DATA RootNode
#define STATUS_DEVICE_NOT_READY
PFFS_MCB FFSSearchMcbTree(PFFS_VCB Vcb, PFFS_MCB FFSMcb, ULONG Inode)