39#pragma alloc_text(INIT, Ext2QueryGlobalParameters)
40#pragma alloc_text(INIT, Ext2QueryRegistrySettings)
41#pragma alloc_text(INIT, DriverEntry)
43#pragma alloc_text(PAGE, DriverUnload)
311 ULONG WritingSupport = 0;
312 ULONG CheckingBitmap = 0;
313 ULONG Ext3ForceWriting = 0;
330 if (!ParameterPath.
Buffer) {
332 DEBUG(
DL_ERR, (
"Ex2QueryParameters: failed to allocate Parameters...\n"));
358 DEBUG(
DL_ERR, (
"Ext2QueryParameters: Wrong CodePage %wZ ...\n", &UniName));
362 DEBUG(
DL_ERR, (
"Ext2QueryParameters: CodePage not specified.\n"));
384 DEBUG(
DL_ERR, (
"Ext2QueryParameters: Wrong HidingPrefix ...\n"));
387 DEBUG(
DL_ERR, (
"Ext2QueryParameters: HidingPrefix not specified.\n"));
408 DEBUG(
DL_ERR, (
"Ext2QueryParameters: Wrong HidingSuffix ...\n"));
411 DEBUG(
DL_ERR, (
"Ext2QueryParameters: HidingSuffix not specified.\n"));
425#define NLS_OEM_LEAD_BYTE_INFO (*NlsOemLeadByteInfo)
428#define FsRtlIsLeadDbcsCharacter(DBCS_CHAR) ( \
429 (BOOLEAN)((UCHAR)(DBCS_CHAR) < 0x80 ? FALSE : \
430 (NLS_MB_CODE_PAGE_TAG && \
431 (NLS_OEM_LEAD_BYTE_INFO[(UCHAR)(DBCS_CHAR)] != 0))) \
514 linux_lib_inited =
TRUE;
522 journal_module_inited =
TRUE;
554 DEBUG(
DL_ERR, (
"IoCreateDevice cdrom device object error.\n"));
570 DEBUG(
DL_ERR, (
"IoCreateDevice disk device object error.\n"));
600 DiskdevObject->DeviceObjectExtension->PowerControlNeeded =
FALSE;
601 CdromdevObject->DeviceObjectExtension->PowerControlNeeded =
FALSE;
632#if (_WIN32_WINNT >= 0x0500)
733#ifndef _WIN2K_TARGET_
834 if (CdromdevObject) {
842 if (journal_module_inited) {
847 if (linux_lib_inited) {
_Acquires_exclusive_lock_ Resource _Acquires_shared_lock_ Resource _Inout_ PERESOURCE Resource
#define NT_SUCCESS(StatCode)
DRIVER_INITIALIZE DriverEntry
#define EXT2_PERF_STAT_VER2
struct _EXT2_PERF_STATISTICS_V2 EXT2_PERF_STATISTICS_V2
#define EXT2_PERF_STAT_MAGIC
NTSTATUS Ext2RegistryQueryCallback(IN PWSTR ValueName, IN ULONG ValueType, IN PVOID ValueData, IN ULONG ValueLength, IN PVOID Context, IN PVOID EntryContext)
VOID Ext2EresourceAlignmentChecking()
BOOLEAN Ext2QueryRegistrySettings(IN PUNICODE_STRING RegistryPath)
NTSTATUS Ext2QueryGlobalParameters(IN PUNICODE_STRING RegistryPath)
NTSTATUS ExInitializeResourceLite(PULONG res)
NTSTATUS RtlAppendUnicodeToString(IN PUNICODE_STRING Str1, IN PWSTR Str2)
#define ExDeleteResourceLite(res)
#define InitializeListHead(ListHead)
#define EXT2_CHECKING_BITMAP
VOID Ext2FreePool(IN PVOID P, IN ULONG Tag)
struct ext2_icb EXT2_IRP_CONTEXT
BOOLEAN Ext2FastIoRead(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)
BOOLEAN Ext2FastIoLock(IN PFILE_OBJECT FileObject, IN PLARGE_INTEGER FileOffset, IN PLARGE_INTEGER Length, IN PEPROCESS Process, IN ULONG Key, IN BOOLEAN FailImmediately, IN BOOLEAN ExclusiveLock, OUT PIO_STATUS_BLOCK IoStatus, IN PDEVICE_OBJECT DeviceObject)
VOID Ext2bhReaperThread(PVOID Context)
VOID Ext2McbReaperThread(PVOID Context)
struct _EXT2_CCB EXT2_CCB
BOOLEAN Ext2FastIoQueryBasicInfo(IN PFILE_OBJECT FileObject, IN BOOLEAN Wait, OUT PFILE_BASIC_INFORMATION Buffer, OUT PIO_STATUS_BLOCK IoStatus, IN PDEVICE_OBJECT DeviceObject)
struct _EXT2_EXTENT EXT2_EXTENT
BOOLEAN Ext2FastIoUnlockAllByKey(IN PFILE_OBJECT FileObject, IN PEPROCESS Process, IN ULONG Key, OUT PIO_STATUS_BLOCK IoStatus, IN PDEVICE_OBJECT DeviceObject)
NTSTATUS Ext2StartReaper(PEXT2_REAPER, EXT2_REAPER_RELEASE)
struct _EXT2_GLOBAL EXT2_GLOBAL
PVOID Ext2AllocatePool(IN POOL_TYPE PoolType, IN SIZE_T NumberOfBytes, IN ULONG Tag)
BOOLEAN Ext2FastIoWrite(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)
BOOLEAN Ext2AcquireForLazyWrite(IN PVOID Context, IN BOOLEAN Wait)
ULONG Ext2GetProcessNameOffset(VOID)
struct _EXT2_VCB EXT2_VCB
NTSTATUS Ext2ReleaseFileForModWrite(IN PFILE_OBJECT FileObject, IN PERESOURCE ResourceToRelease, IN PDEVICE_OBJECT DeviceObject)
VOID Ext2AcquireForCreateSection(IN PFILE_OBJECT FileObject)
VOID Ext2ReleaseFromLazyWrite(IN PVOID Context)
BOOLEAN Ext2FastIoQueryStandardInfo(IN PFILE_OBJECT FileObject, IN BOOLEAN Wait, OUT PFILE_STANDARD_INFORMATION Buffer, OUT PIO_STATUS_BLOCK IoStatus, IN PDEVICE_OBJECT DeviceObject)
#define SetLongFlag(_F, _SF)
BOOLEAN Ext2NoOpAcquire(IN PVOID Fcb, IN BOOLEAN Wait)
NTSTATUS Ext2ReleaseFileForCcFlush(IN PFILE_OBJECT FileObject, IN PDEVICE_OBJECT DeviceObject)
#define ClearLongFlag(_F, _SF)
NTSTATUS Ext2PreAcquireForCreateSection(IN PFS_FILTER_CALLBACK_DATA cd, OUT PVOID *cc)
BOOLEAN Ext2AcquireForReadAhead(IN PVOID Context, IN BOOLEAN Wait)
NTSTATUS Ext2AcquireFileForCcFlush(IN PFILE_OBJECT FileObject, IN PDEVICE_OBJECT DeviceObject)
VOID Ext2ReleaseFromReadAhead(IN PVOID Context)
void ext2_destroy_linux()
BOOLEAN Ext2FastIoUnlockAll(IN PFILE_OBJECT FileObject, IN PEPROCESS Process, OUT PIO_STATUS_BLOCK IoStatus, IN PDEVICE_OBJECT DeviceObject)
BOOLEAN Ext2FastIoCheckIfPossible(IN PFILE_OBJECT FileObject, IN PLARGE_INTEGER FileOffset, IN ULONG Length, IN BOOLEAN Wait, IN ULONG LockKey, IN BOOLEAN CheckForReadOperation, OUT PIO_STATUS_BLOCK IoStatus, IN PDEVICE_OBJECT DeviceObject)
VOID Ext2StopReaper(PEXT2_REAPER Reaper)
#define EXT2_SUPPORT_WRITING
VOID Ext2FcbReaperThread(PVOID Context)
struct _EXT2_FCB EXT2_FCB
BOOLEAN Ext2FastIoQueryNetworkOpenInfo(IN PFILE_OBJECT FileObject, IN BOOLEAN Wait, OUT PFILE_NETWORK_OPEN_INFORMATION Buffer, OUT PIO_STATUS_BLOCK IoStatus, IN PDEVICE_OBJECT DeviceObject)
VOID Ext2ReleaseForCreateSection(IN PFILE_OBJECT FileObject)
#define EXT3_FORCEWRITING
#define EXT3_FORCE_WRITING
struct ext3_dir_entry_2 EXT2_DIR_ENTRY2
VOID Ext2NoOpRelease(IN PVOID Fcb)
NTSTATUS Ext2BuildRequest(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
struct _EXT2_MCB EXT2_MCB
BOOLEAN Ext2FastIoUnlockSingle(IN PFILE_OBJECT FileObject, IN PLARGE_INTEGER FileOffset, IN PLARGE_INTEGER Length, IN PEPROCESS Process, IN ULONG Key, OUT PIO_STATUS_BLOCK IoStatus, IN PDEVICE_OBJECT DeviceObject)
struct _EXT2_RW_CONTEXT EXT2_RW_CONTEXT
NTSTATUS Ext2AcquireFileForModWrite(IN PFILE_OBJECT FileObject, IN PLARGE_INTEGER EndingOffset, OUT PERESOURCE *ResourceToRelease, 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 i
_In_ GUID _In_ PVOID ValueData
_CRTIMP size_t __cdecl wcslen(_In_z_ const wchar_t *_Str)
NTSYSAPI NTSTATUS WINAPI RtlQueryRegistryValues(ULONG, PCWSTR, PRTL_QUERY_REGISTRY_TABLE, PVOID, PVOID)
static DRIVER_UNLOAD DriverUnload
VOID NTAPI ExDeleteNPagedLookasideList(IN PNPAGED_LOOKASIDE_LIST Lookaside)
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)
static char DosDeviceName[DEVICE_SIZE]
MM_SYSTEMSIZE NTAPI MmQuerySystemSize(VOID)
struct nls_table * load_nls(char *)
_In_ PCWSTR _Inout_ _At_ QueryTable EntryContext
_In_ PCWSTR _Inout_ _At_ QueryTable _Pre_unknown_ PRTL_QUERY_REGISTRY_TABLE QueryTable
NTSYSAPI VOID NTAPI RtlCopyUnicodeString(PUNICODE_STRING DestinationString, PUNICODE_STRING SourceString)
NTSYSAPI NTSTATUS NTAPI RtlUnicodeStringToAnsiString(PANSI_STRING DestinationString, PUNICODE_STRING SourceString, BOOLEAN AllocateDestinationString)
NTSYSAPI VOID NTAPI RtlInitUnicodeString(PUNICODE_STRING DestinationString, PCWSTR SourceString)
#define RTL_REGISTRY_ABSOLUTE
NTSTATUS NTAPI FsRtlRegisterFileSystemFilterCallbacks(PDRIVER_OBJECT FilterDriverObject, PFS_FILTER_CALLBACKS Callbacks)
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 IoDeleteDevice(IN PDEVICE_OBJECT DeviceObject)
NTSTATUS NTAPI IoCreateSymbolicLink(IN PUNICODE_STRING SymbolicLinkName, IN PUNICODE_STRING DeviceName)
NTSTATUS NTAPI IoDeleteSymbolicLink(IN PUNICODE_STRING SymbolicLinkName)
VOID NTAPI IoRegisterFileSystem(IN PDEVICE_OBJECT DeviceObject)
FAST_IO_DISPATCH FastIoDispatch
#define FILE_DEVICE_DISK_FILE_SYSTEM
#define FILE_DEVICE_CD_ROM_FILE_SYSTEM
#define IRP_MJ_DIRECTORY_CONTROL
#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
static void __exit journal_exit(void)
static int __init journal_init(void)
_Check_return_ _CRTIMP int __cdecl _wcsnicmp(_In_reads_or_z_(_MaxCount) const wchar_t *_Str1, _In_reads_or_z_(_MaxCount) const wchar_t *_Str2, _In_ size_t _MaxCount)
PACQUIRE_FOR_LAZY_WRITE AcquireForLazyWrite
PRELEASE_FROM_LAZY_WRITE ReleaseFromLazyWrite
PACQUIRE_FOR_READ_AHEAD AcquireForReadAhead
PRELEASE_FROM_READ_AHEAD ReleaseFromReadAhead
FAST_IO_DISPATCH FastIoDispatch
UNICODE_STRING RegistryPath
CACHE_MANAGER_CALLBACKS CacheManagerNoOpCallbacks
NPAGED_LOOKASIDE_LIST Ext2ExtLookasideList
NPAGED_LOOKASIDE_LIST Ext2McbLookasideList
NPAGED_LOOKASIDE_LIST Ext2IrpContextLookasideList
NPAGED_LOOKASIDE_LIST Ext2FcbLookasideList
EXT2_IDENTIFIER Identifier
struct _EXT2_GLOBAL::@697 Codepage
FS_FILTER_CALLBACKS FilterCallbacks
PDEVICE_OBJECT DiskdevObject
NPAGED_LOOKASIDE_LIST Ext2DentryLookasideList
WCHAR wHidingSuffix[HIDINGPAT_LEN]
EXT2_PERF_STATISTICS_V2 PerfStat
CHAR sHidingSuffix[HIDINGPAT_LEN]
NPAGED_LOOKASIDE_LIST Ext2CcbLookasideList
WCHAR wHidingPrefix[HIDINGPAT_LEN]
CHAR sHidingPrefix[HIDINGPAT_LEN]
CACHE_MANAGER_CALLBACKS CacheManagerCallbacks
PDEVICE_OBJECT CdromdevObject
EXT2_IDENTIFIER_TYPE Type
PFAST_IO_ACQUIRE_FOR_MOD_WRITE AcquireForModWrite
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_QUERY_NETWORK_OPEN_INFO FastIoQueryNetworkOpenInfo
PFAST_IO_ACQUIRE_FOR_CCFLUSH AcquireForCcFlush
ULONG SizeOfFastIoDispatch
PFAST_IO_ACQUIRE_FILE AcquireFileForNtCreateSection
PFAST_IO_QUERY_BASIC_INFO FastIoQueryBasicInfo
PFAST_IO_UNLOCK_SINGLE FastIoUnlockSingle
PFAST_IO_RELEASE_FILE ReleaseFileForNtCreateSection
PFAST_IO_RELEASE_FOR_MOD_WRITE ReleaseForModWrite
PFAST_IO_CHECK_IF_POSSIBLE FastIoCheckIfPossible
ULONG SizeOfFsFilterCallbacks
PFS_FILTER_CALLBACK PreAcquireForSectionSynchronization
PRTL_QUERY_REGISTRY_ROUTINE QueryRoutine
#define FIELD_OFFSET(t, f)
#define RtlCopyMemory(Destination, Source, Length)
#define RtlZeroMemory(Destination, Length)
#define STATUS_INSUFFICIENT_RESOURCES
ULONG Slot[PS_MAX_TYPE_V2]
_Must_inspect_result_ _In_ PWDFDEVICE_INIT _In_opt_ PCUNICODE_STRING DeviceName
_Must_inspect_result_ _In_ PDRIVER_OBJECT _In_ PCUNICODE_STRING RegistryPath
_Must_inspect_result_ _In_ PDRIVER_OBJECT DriverObject
_Must_inspect_result_ _In_ WDFKEY _In_ PCUNICODE_STRING _In_ ULONG _Out_opt_ PULONG _Out_opt_ PULONG ValueType
_Must_inspect_result_ _In_ WDFKEY _In_ PCUNICODE_STRING ValueName
_Must_inspect_result_ _In_ WDFKEY _In_ PCUNICODE_STRING _In_ ULONG ValueLength
#define IRP_MJ_FILE_SYSTEM_CONTROL
#define IRP_MJ_SET_VOLUME_INFORMATION
struct _FS_FILTER_CALLBACKS FS_FILTER_CALLBACKS
struct _FAST_IO_DISPATCH FAST_IO_DISPATCH
#define IRP_MJ_FLUSH_BUFFERS
#define ObDereferenceObject
#define ObReferenceObject