35 #pragma alloc_text(INIT, Ext2QueryGlobalParameters) 36 #pragma alloc_text(INIT, Ext2QueryRegistrySettings) 37 #pragma alloc_text(INIT, DriverEntry) 39 #pragma alloc_text(PAGE, DriverUnload) 300 ULONG WritingSupport = 0;
301 ULONG CheckingBitmap = 0;
302 ULONG Ext3ForceWriting = 0;
319 if (!ParameterPath.
Buffer) {
321 DEBUG(
DL_ERR, (
"Ex2QueryParameters: failed to allocate Parameters...\n"));
347 DEBUG(
DL_ERR, (
"Ext2QueryParameters: Wrong CodePage %wZ ...\n", &UniName));
351 DEBUG(
DL_ERR, (
"Ext2QueryParameters: CodePage not specified.\n"));
373 DEBUG(
DL_ERR, (
"Ext2QueryParameters: Wrong HidingPrefix ...\n"));
376 DEBUG(
DL_ERR, (
"Ext2QueryParameters: HidingPrefix not specified.\n"));
397 DEBUG(
DL_ERR, (
"Ext2QueryParameters: Wrong HidingSuffix ...\n"));
400 DEBUG(
DL_ERR, (
"Ext2QueryParameters: HidingSuffix not specified.\n"));
414 #define NLS_OEM_LEAD_BYTE_INFO (*NlsOemLeadByteInfo) 417 #define FsRtlIsLeadDbcsCharacter(DBCS_CHAR) ( \ 418 (BOOLEAN)((UCHAR)(DBCS_CHAR) < 0x80 ? FALSE : \ 419 (NLS_MB_CODE_PAGE_TAG && \ 420 (NLS_OEM_LEAD_BYTE_INFO[(UCHAR)(DBCS_CHAR)] != 0))) \ 499 linux_lib_inited =
TRUE;
507 journal_module_inited =
TRUE;
539 DEBUG(
DL_ERR, (
"IoCreateDevice cdrom device object error.\n"));
555 DEBUG(
DL_ERR, (
"IoCreateDevice disk device object error.\n"));
585 DiskdevObject->DeviceObjectExtension->PowerControlNeeded =
FALSE;
586 CdromdevObject->DeviceObjectExtension->PowerControlNeeded =
FALSE;
617 #if (_WIN32_WINNT >= 0x0500) 619 #endif //(_WIN32_WINNT >= 0x0500) 718 #ifndef _WIN2K_TARGET_ 819 if (CdromdevObject) {
827 if (journal_module_inited) {
832 if (linux_lib_inited) {
struct _EXT2_PERF_STATISTICS_V2 EXT2_PERF_STATISTICS_V2
_In_ PCWSTR _Inout_ _At_ QueryTable _Pre_unknown_ PRTL_QUERY_REGISTRY_TABLE QueryTable
PFAST_IO_UNLOCK_SINGLE FastIoUnlockSingle
NPAGED_LOOKASIDE_LIST Ext2McbLookasideList
BOOLEAN NTAPI 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)
#define STATUS_INSUFFICIENT_RESOURCES
#define EXT2_PERF_STAT_MAGIC
ULONG SizeOfFsFilterCallbacks
NTSYSAPI NTSTATUS WINAPI RtlQueryRegistryValues(ULONG, PCWSTR, PRTL_QUERY_REGISTRY_TABLE, PVOID, PVOID)
#define IRP_MJ_FLUSH_BUFFERS
NPAGED_LOOKASIDE_LIST Ext2IrpContextLookasideList
VOID NTAPI Ext2StopReaper(PEXT2_REAPER Reaper)
_Must_inspect_result_ _In_ PDRIVER_OBJECT _In_ PCUNICODE_STRING RegistryPath
_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)
struct _EXT2_RW_CONTEXT EXT2_RW_CONTEXT
#define IRP_MJ_SET_VOLUME_INFORMATION
BOOLEAN NTAPI Ext2AcquireForLazyWrite(IN PVOID Context, IN BOOLEAN Wait)
NTSTATUS ExInitializeResourceLite(PULONG res)
NTSTATUS NTAPI ExDeleteResourceLite(IN PERESOURCE Resource)
NTSTATUS NTAPI IoDeleteSymbolicLink(IN PUNICODE_STRING SymbolicLinkName)
NPAGED_LOOKASIDE_LIST Ext2FcbLookasideList
PFAST_IO_UNLOCK_ALL FastIoUnlockAll
PFAST_IO_RELEASE_FILE ReleaseFileForNtCreateSection
EXT2_PERF_STATISTICS_V2 PerfStat
PFAST_IO_QUERY_NETWORK_OPEN_INFO FastIoQueryNetworkOpenInfo
EXT2_IDENTIFIER Identifier
PFAST_IO_RELEASE_FOR_MOD_WRITE ReleaseForModWrite
_Must_inspect_result_ _In_ WDFKEY _In_ PCUNICODE_STRING _In_ ULONG _Out_opt_ PULONG _Out_opt_ PULONG ValueType
NTSTATUS NTAPI Ext2AcquireFileForModWrite(IN PFILE_OBJECT FileObject, IN PLARGE_INTEGER EndingOffset, OUT PERESOURCE *ResourceToRelease, IN PDEVICE_OBJECT DeviceObject)
NTSYSAPI VOID NTAPI RtlCopyUnicodeString(PUNICODE_STRING DestinationString, PUNICODE_STRING SourceString)
#define EXT3_FORCEWRITING
NPAGED_LOOKASIDE_LIST Ext2CcbLookasideList
EXT2_IDENTIFIER_TYPE Type
NPAGED_LOOKASIDE_LIST Ext2DentryLookasideList
CHAR sHidingPrefix[HIDINGPAT_LEN]
#define EXT2_PERF_STAT_VER2
PFS_FILTER_CALLBACK PreAcquireForSectionSynchronization
NPAGED_LOOKASIDE_LIST Ext2ExtLookasideList
BOOLEAN NTAPI 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)
_Must_inspect_result_ _In_ PWDFDEVICE_INIT _In_opt_ PCUNICODE_STRING DeviceName
BOOLEAN NTAPI 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 NTAPI Ext2bhReaperThread(PVOID Context)
PRTL_QUERY_REGISTRY_ROUTINE QueryRoutine
NTSTATUS(* NTAPI)(IN PFILE_FULL_EA_INFORMATION EaBuffer, IN ULONG EaLength, OUT PULONG ErrorOffset)
_Acquires_exclusive_lock_ Resource _Acquires_shared_lock_ Resource _Inout_ PERESOURCE Resource
DECLARE_INIT(journal_init)
NTSTATUS NTAPI Ext2ReleaseFileForCcFlush(IN PFILE_OBJECT FileObject, IN PDEVICE_OBJECT DeviceObject)
NTSTATUS NTAPI DriverEntry(IN PDRIVER_OBJECT DriverObject, IN PUNICODE_STRING RegistryPath)
PFAST_IO_QUERY_BASIC_INFO FastIoQueryBasicInfo
struct _FAST_IO_DISPATCH FAST_IO_DISPATCH
WCHAR wHidingPrefix[HIDINGPAT_LEN]
PDEVICE_OBJECT DiskdevObject
static int __init journal_init(void)
_In_ PCWSTR _Inout_ _At_ QueryTable EntryContext
NTSTATUS NTAPI Ext2BuildRequest(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
struct ext3_dir_entry_2 EXT2_DIR_ENTRY2
struct _EXT2_CCB EXT2_CCB
FAST_IO_DISPATCH FastIoDispatch
#define ClearLongFlag(_F, _SF)
NTSYSAPI NTSTATUS NTAPI RtlUnicodeStringToAnsiString(PANSI_STRING DestinationString, PUNICODE_STRING SourceString, BOOLEAN AllocateDestinationString)
#define IRP_MJ_QUERY_VOLUME_INFORMATION
#define IRP_MJ_DIRECTORY_CONTROL
PDEVICE_OBJECT CdromdevObject
_Must_inspect_result_ _In_ PDRIVER_OBJECT DriverObject
#define FILE_DEVICE_DISK_FILE_SYSTEM
ULONG Slot[PS_MAX_TYPE_V2]
struct _EXT2_FCB EXT2_FCB
NTSTATUS RtlAppendUnicodeToString(IN PUNICODE_STRING Str1, IN PWSTR Str2)
NTSTATUS NTAPI IoCreateSymbolicLink(IN PUNICODE_STRING SymbolicLinkName, IN PUNICODE_STRING DeviceName)
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)
DECLARE_EXIT(journal_exit)
#define NT_SUCCESS(StatCode)
struct ext2_icb EXT2_IRP_CONTEXT
#define IRP_MJ_FILE_SYSTEM_CONTROL
struct nls_table * load_nls(char *)
MM_SYSTEMSIZE NTAPI MmQuerySystemSize(VOID)
#define ObDereferenceObject
struct _EXT2_VCB EXT2_VCB
#define EXT2_SUPPORT_WRITING
PACQUIRE_FOR_LAZY_WRITE AcquireForLazyWrite
_In_ GUID _In_ PVOID ValueData
PFAST_IO_UNLOCK_ALL_BY_KEY FastIoUnlockAllByKey
PACQUIRE_FOR_READ_AHEAD AcquireForReadAhead
static char DosDeviceName[DEVICE_SIZE]
_Must_inspect_result_ _In_ WDFKEY _In_ PCUNICODE_STRING ValueName
NTSTATUS NTAPI FsRtlRegisterFileSystemFilterCallbacks(PDRIVER_OBJECT FilterDriverObject, PFS_FILTER_CALLBACKS Callbacks)
PFAST_IO_ACQUIRE_FOR_CCFLUSH AcquireForCcFlush
#define EXT2_CHECKING_BITMAP
void ext2_destroy_linux()
NTSTATUS NTAPI Ext2ReleaseFileForModWrite(IN PFILE_OBJECT FileObject, IN PERESOURCE ResourceToRelease, IN PDEVICE_OBJECT DeviceObject)
BOOLEAN NTAPI Ext2FastIoUnlockAllByKey(IN PFILE_OBJECT FileObject, IN PEPROCESS Process, IN ULONG Key, OUT PIO_STATUS_BLOCK IoStatus, IN PDEVICE_OBJECT DeviceObject)
BOOLEAN NTAPI Ext2FastIoUnlockAll(IN PFILE_OBJECT FileObject, IN PEPROCESS Process, OUT PIO_STATUS_BLOCK IoStatus, IN PDEVICE_OBJECT DeviceObject)
PRELEASE_FROM_READ_AHEAD ReleaseFromReadAhead
NTSTATUS NTAPI Ext2RegistryQueryCallback(IN PWSTR ValueName, IN ULONG ValueType, IN PVOID ValueData, IN ULONG ValueLength, IN PVOID Context, IN PVOID EntryContext)
VOID Ext2EresourceAlignmentChecking()
struct _EXT2_GLOBAL::@674 Codepage
VOID NTAPI Ext2ReleaseForCreateSection(IN PFILE_OBJECT FileObject)
#define RTL_REGISTRY_ABSOLUTE
#define EXT3_FORCE_WRITING
struct _EXT2_MCB EXT2_MCB
BOOLEAN NTAPI Ext2FastIoQueryStandardInfo(IN PFILE_OBJECT FileObject, IN BOOLEAN Wait, OUT PFILE_STANDARD_INFORMATION Buffer, OUT PIO_STATUS_BLOCK IoStatus, IN PDEVICE_OBJECT DeviceObject)
struct _FS_FILTER_CALLBACKS FS_FILTER_CALLBACKS
NTSTATUS Ext2StartReaper(PEXT2_REAPER, EXT2_REAPER_RELEASE)
PFAST_IO_ACQUIRE_FOR_MOD_WRITE AcquireForModWrite
BOOLEAN NTAPI Ext2NoOpAcquire(IN PVOID Fcb, IN BOOLEAN Wait)
BOOLEAN NTAPI Ext2FastIoQueryBasicInfo(IN PFILE_OBJECT FileObject, IN BOOLEAN Wait, OUT PFILE_BASIC_INFORMATION Buffer, OUT PIO_STATUS_BLOCK IoStatus, IN PDEVICE_OBJECT DeviceObject)
ULONG Ext2GetProcessNameOffset(VOID)
BOOLEAN NTAPI Ext2AcquireForReadAhead(IN PVOID Context, IN BOOLEAN Wait)
VOID NTAPI IoDeleteDevice(IN PDEVICE_OBJECT DeviceObject)
NTSTATUS NTAPI Ext2AcquireFileForCcFlush(IN PFILE_OBJECT FileObject, IN PDEVICE_OBJECT DeviceObject)
PFAST_IO_WRITE FastIoWrite
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
NTSTATUS NTAPI Ext2PreAcquireForCreateSection(IN PFS_FILTER_CALLBACK_DATA cd, OUT PVOID *cc)
BOOLEAN NTAPI 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 Ext2QueryRegistrySettings(IN PUNICODE_STRING RegistryPath)
VOID NTAPI Ext2AcquireForCreateSection(IN PFILE_OBJECT FileObject)
#define InitializeListHead(ListHead)
static DRIVER_UNLOAD DriverUnload
static void __exit journal_exit(void)
#define SetLongFlag(_F, _SF)
#define FIELD_OFFSET(t, f)
PFAST_IO_QUERY_STANDARD_INFO FastIoQueryStandardInfo
FAST_IO_DISPATCH FastIoDispatch
_CRTIMP size_t __cdecl wcslen(_In_z_ const wchar_t *_Str)
#define IRP_MJ_LOCK_CONTROL
VOID NTAPI Ext2McbReaperThread(PVOID Context)
VOID NTAPI Ext2ReleaseFromLazyWrite(IN PVOID Context)
VOID NTAPI IoRegisterFileSystem(IN PDEVICE_OBJECT DeviceObject)
#define FILE_DEVICE_CD_ROM_FILE_SYSTEM
#define ObReferenceObject
PRELEASE_FROM_LAZY_WRITE ReleaseFromLazyWrite
UNICODE_STRING RegistryPath
#define IRP_MJ_SET_INFORMATION
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)
PFAST_IO_CHECK_IF_POSSIBLE FastIoCheckIfPossible
NTSYSAPI VOID NTAPI RtlInitUnicodeString(PUNICODE_STRING DestinationString, PCWSTR SourceString)
#define RtlZeroMemory(Destination, Length)
VOID Ext2FreePool(IN PVOID P, IN ULONG Tag)
#define RtlCopyMemory(Destination, Source, Length)
#define IRP_MJ_QUERY_INFORMATION
CACHE_MANAGER_CALLBACKS CacheManagerNoOpCallbacks
BOOLEAN NTAPI 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)
WCHAR wHidingSuffix[HIDINGPAT_LEN]
struct _EXT2_EXTENT EXT2_EXTENT
PFAST_IO_ACQUIRE_FILE AcquireFileForNtCreateSection
CHAR sHidingSuffix[HIDINGPAT_LEN]
VOID NTAPI ExDeleteNPagedLookasideList(IN PNPAGED_LOOKASIDE_LIST Lookaside)
PVOID Ext2AllocatePool(IN POOL_TYPE PoolType, IN SIZE_T NumberOfBytes, IN ULONG Tag)
PFAST_IO_RELEASE_FOR_CCFLUSH ReleaseForCcFlush
CACHE_MANAGER_CALLBACKS CacheManagerCallbacks
BOOLEAN NTAPI Ext2FastIoQueryNetworkOpenInfo(IN PFILE_OBJECT FileObject, IN BOOLEAN Wait, OUT PFILE_NETWORK_OPEN_INFORMATION Buffer, OUT PIO_STATUS_BLOCK IoStatus, IN PDEVICE_OBJECT DeviceObject)
struct _EXT2_GLOBAL EXT2_GLOBAL
NTSTATUS Ext2QueryGlobalParameters(IN PUNICODE_STRING RegistryPath)
VOID NTAPI Ext2FcbReaperThread(PVOID Context)
VOID NTAPI Ext2ReleaseFromReadAhead(IN PVOID Context)
FS_FILTER_CALLBACKS FilterCallbacks
#define IRP_MJ_DEVICE_CONTROL
ULONG SizeOfFastIoDispatch
VOID NTAPI Ext2NoOpRelease(IN PVOID Fcb)
_Must_inspect_result_ _In_ WDFKEY _In_ PCUNICODE_STRING _In_ ULONG ValueLength