ReactOS  0.4.13-dev-235-g7373cb3
init.c
Go to the documentation of this file.
1 /*
2  * COPYRIGHT: GNU GENERAL PUBLIC LICENSE VERSION 2
3  * PROJECT: ReiserFs file system driver for Windows NT/2000/XP/Vista.
4  * FILE: init.c
5  * PURPOSE:
6  * PROGRAMMER: Mark Piper, Matt Wu, Bo BrantÚn.
7  * HOMEPAGE:
8  * UPDATE HISTORY:
9  */
10 
11 /* INCLUDES *****************************************************************/
12 
13 #include "rfsd.h"
14 
15 /* GLOBALS ***************************************************************/
16 
18 
19 /* DEFINITIONS ***********************************************************/
20 
25 
26 #ifdef ALLOC_PRAGMA
27 #pragma alloc_text(INIT, RfsdQueryParameters)
28 #pragma alloc_text(INIT, DriverEntry)
29 #if RFSD_UNLOAD
30 #pragma alloc_text(PAGE, DriverUnload)
31 #endif
32 #endif
33 
34 /* FUNCTIONS ***************************************************************/
35 
36 #if RFSD_UNLOAD
37 
38 /*
39  * FUNCTION: Called by the system to unload the driver
40  * ARGUMENTS:
41  * DriverObject = object describing this driver
42  * RETURNS: None
43  */
44 
45 VOID NTAPI
47 {
49 
50  PAGED_CODE();
51 
52  RfsdPrint((DBG_FUNC, "Rfsd: Unloading routine.\n"));
53 
56 
60 
65 
67 
69 }
70 
71 #endif
72 
73 BOOLEAN
75 {
77  UNICODE_STRING ParameterPath;
79 
80  ULONG WritingSupport;
81  ULONG CheckingBitmap;
82  ULONG Ext3ForceWriting;
83 
84  UNICODE_STRING CodePage;
85  ANSI_STRING AnsiName;
86 
87  ParameterPath.Length = 0;
88 
89  ParameterPath.MaximumLength =
90  RegistryPath->Length + sizeof(PARAMETERS_KEY) + sizeof(WCHAR);
91 
92  ParameterPath.Buffer =
94 
95  if (!ParameterPath.Buffer) {
96  return FALSE;
97  }
98 
99  WritingSupport = 0;
100  CheckingBitmap = 0;
101  Ext3ForceWriting = 0;
102 
103  RtlCopyUnicodeString(&ParameterPath, RegistryPath);
104 
105  RtlAppendUnicodeToString(&ParameterPath, PARAMETERS_KEY);
106 
108 
111  QueryTable[0].EntryContext = &WritingSupport;
112 
115  ParameterPath.Buffer,
116  &QueryTable[0],
117  NULL,
118  NULL );
119 
120  RfsdPrint((DBG_USER, "RfsdQueryParameters: WritingSupport=%xh\n", WritingSupport));
121 
123 
126  QueryTable[0].EntryContext = &CheckingBitmap;
127 
130  ParameterPath.Buffer,
131  &QueryTable[0],
132  NULL,
133  NULL );
134 
135  RfsdPrint((DBG_USER, "RfsdQueryParameters: CheckingBitmap=%xh\n", CheckingBitmap));
136 
138 
141  QueryTable[0].EntryContext = &Ext3ForceWriting;
142 
145  ParameterPath.Buffer,
146  &QueryTable[0],
147  NULL,
148  NULL );
149 
150  RfsdPrint((DBG_USER, "RfsdQueryParameters: Ext3ForceWriting=%xh\n", Ext3ForceWriting));
151 
153 
156  QueryTable[0].EntryContext = &(CodePage);
157  CodePage.MaximumLength = CODEPAGE_MAXLEN * sizeof(WCHAR);
158  CodePage.Length = 0;
159  CodePage.Buffer = &(RfsdGlobal->CodePage.UniName[0]);
160 
163  ParameterPath.Buffer,
164  &QueryTable[0],
165  NULL,
166  NULL );
167 
168  if (NT_SUCCESS(Status)) {
169  RfsdPrint((DBG_USER, "RfsdQueryParameters: RfsdCodePage=%S\n", CodePage.Buffer));
170  AnsiName.MaximumLength = CODEPAGE_MAXLEN;
171  AnsiName.Length = 0;
172  AnsiName.Buffer = &(RfsdGlobal->CodePage.AnsiName[0]);
173 
175  &AnsiName,
176  &CodePage,
177  FALSE);
178 
179  if (!NT_SUCCESS(Status)) {
180  RfsdPrint((DBG_USER, "RfsdQueryParameters: Wrong CodePage ...\n"));
181  RtlCopyMemory(&(RfsdGlobal->CodePage.AnsiName[0]),"default\0", 8);
182  }
183 
184  } else {
185  RfsdPrint((DBG_USER, "RfsdQueryParameters: CodePage not specified.\n"));
186  RtlCopyMemory(&(RfsdGlobal->CodePage.AnsiName[0]),"default\0", 8);
187  }
188 
189  {
190  if (WritingSupport) {
192  } else {
194  }
195 
196  if (CheckingBitmap) {
198  } else {
200  }
201 
202  if (Ext3ForceWriting) {
203  KdPrint(("Rfsd -- Warning: Ext3ForceWriring enabled !!!\n"));
204 
207  } else {
209  }
210  }
211 
212  ExFreePool(ParameterPath.Buffer);
213 
214  return TRUE;
215 }
216 
217 #define NLS_OEM_LEAD_BYTE_INFO (*NlsOemLeadByteInfo)
218 
219 #ifndef __REACTOS__
220 #define FsRtlIsLeadDbcsCharacter(DBCS_CHAR) ( \
221  (BOOLEAN)((UCHAR)(DBCS_CHAR) < 0x80 ? FALSE : \
222  (NLS_MB_CODE_PAGE_TAG && \
223  (NLS_OEM_LEAD_BYTE_INFO[(UCHAR)(DBCS_CHAR)] != 0))) \
224 )
225 #endif
226 
227 /*
228  * NAME: DriverEntry
229  * FUNCTION: Called by the system to initalize the driver
230  *
231  * ARGUMENTS:
232  * DriverObject = object describing this driver
233  * RegistryPath = path to our configuration entries
234  * RETURNS: Success or failure
235  */
240  )
241 {
244  PCACHE_MANAGER_CALLBACKS CacheManagerCallbacks;
245  PRFSDFS_EXT DeviceExt;
246 
249 
250 #if RFSD_UNLOAD
252 #endif
253 
254  DbgPrint(
255  "Rfsd "
257 #if RFSD_READ_ONLY
258  " read-only"
259 #endif
260 #if DBG
261  " checked"
262 #endif
263  " " __DATE__ " " __TIME__
264  "\nCopyright (C) 1999-2015 Mark Piper, Matt Wu, Bo Branten.\n");
265 
266  RfsdPrint((DBG_FUNC, "Rfsd DriverEntry ...\n"));
267 
269 
271  DriverObject,
272  sizeof(RFSDFS_EXT),
273  &DeviceName,
275  0,
276  FALSE,
277  &DeviceObject );
278 
279  if (!NT_SUCCESS(Status)) {
280  RfsdPrint((DBG_ERROR, "IoCreateDevice fs object error.\n"));
281  return Status;
282  }
283 
285  RtlZeroMemory(DeviceExt, sizeof(RFSDFS_EXT));
286 
287  RfsdGlobal = &(DeviceExt->RfsdGlobal);
288 
293 
295 
299 #if !RFSD_READ_ONLY
301 #endif // !RFSD_READ_ONLY
302 
305 
308 
310 #if !RFSD_READ_ONLY
312 #endif // !RFSD_READ_ONLY
313 
318 
320 
321 #if (_WIN32_WINNT >= 0x0500)
323 #endif //(_WIN32_WINNT >= 0x0500)
324 
325 #if RFSD_UNLOAD
327 #else
329 #endif
330 
331  //
332  // Initialize the fast I/O entry points
333  //
335 
338 #if DBG
340 #if !RFSD_READ_ONLY
342 #endif // !RFSD_READ_ONLY
343 #else
344 #pragma prefast( suppress: 28155, "allowed in file system drivers" )
346 #if !RFSD_READ_ONLY
347 #pragma prefast( suppress: 28155, "allowed in file system drivers" )
349 #endif // !RFSD_READ_ONLY
350 #endif
358 
359 #ifdef _MSC_VER
360 #pragma prefast( suppress: 28175, "allowed in file system drivers" )
361 #endif
363 
364  switch ( MmQuerySystemSize() ) {
365 
366  case MmSmallSystem:
367 
368  RfsdGlobal->MaxDepth = 16;
369  break;
370 
371  case MmMediumSystem:
372 
373  RfsdGlobal->MaxDepth = 64;
374  break;
375 
376  case MmLargeSystem:
377 
378  RfsdGlobal->MaxDepth = 256;
379  break;
380  }
381 
382  //
383  // Initialize the Cache Manager callbacks
384  //
385  CacheManagerCallbacks = &(RfsdGlobal->CacheManagerCallbacks);
386  CacheManagerCallbacks->AcquireForLazyWrite = RfsdAcquireForLazyWrite;
387  CacheManagerCallbacks->ReleaseFromLazyWrite = RfsdReleaseFromLazyWrite;
388  CacheManagerCallbacks->AcquireForReadAhead = RfsdAcquireForReadAhead;
389  CacheManagerCallbacks->ReleaseFromReadAhead = RfsdReleaseFromReadAhead;
390 
395 
396  //
397  // Initialize the global data
398  //
399 
404 
406  NULL,
407  NULL,
408  0,
409  sizeof(RFSD_IRP_CONTEXT),
410  '2TXE',
411  0 );
412 
414  NULL,
415  NULL,
416  0,
417  sizeof(RFSD_FCB),
418  '2TXE',
419  0 );
420 
422  NULL,
423  NULL,
424  0,
425  sizeof(RFSD_CCB),
426  '2TXE',
427  0 );
428 
430  NULL,
431  NULL,
432  0,
433  sizeof(RFSD_MCB),
434  '2TXE',
435  0 );
436 
437 #if RFSD_UNLOAD
440 #endif
441 
442 #if DBG
444 #endif
445 
446  RfsdLoadAllNls();
447 
448  PAGE_TABLE = load_nls(RfsdGlobal->CodePage.AnsiName);
449 
450  if (!PAGE_TABLE) {
451  KdPrint(( "Rfsd: User specified codepage (%s) was not found.\n"
452  " Defulat system OEM codepage will be adopted.\n",
453  RfsdGlobal->CodePage.AnsiName ));
454  //DbgBreak();
455  }
456 
458 
459  return Status;
460 }
CACHE_MANAGER_CALLBACKS CacheManagerCallbacks
Definition: rfsd.h:400
_In_ PCWSTR _Inout_ _At_ QueryTable _Pre_unknown_ PRTL_QUERY_REGISTRY_TABLE QueryTable
Definition: rtlfuncs.h:3988
#define IN
Definition: typedefs.h:38
PFAST_IO_UNLOCK_SINGLE FastIoUnlockSingle
Definition: iotypes.h:1696
#define RFSD_CHECKING_BITMAP
Definition: rfsd.h:450
#define TRUE
Definition: types.h:120
NTSYSAPI VOID NTAPI RtlCopyMemory(VOID UNALIGNED *Destination, CONST VOID UNALIGNED *Source, ULONG Length)
#define IRP_MJ_CREATE
Definition: rdpdr.c:44
VOID NTAPI ExInitializePagedLookasideList(IN PPAGED_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)
Definition: lookas.c:274
BOOLEAN NTAPI RfsdFastIoRead(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)
#define RFSD_READ_ONLY
Definition: rfsd.h:91
#define RFSD_VERSION
Definition: rfsd.h:83
#define EXT3_CODEPAGE
Definition: rfsd.h:152
#define RFSD_SUPPORT_WRITING
Definition: rfsd.h:448
VOID RfsdUnloadAllNls()
Definition: nls.c:217
#define IRP_MJ_FLUSH_BUFFERS
USHORT MaxDepth
Definition: rfsd.h:413
#define DbgPrint
Definition: loader.c:25
USHORT MaximumLength
Definition: env_spec_w32.h:370
#define IRP_MJ_SHUTDOWN
RFSD_IDENTIFIER Identifier
Definition: rfsd.h:385
BOOLEAN NTAPI RfsdAcquireForLazyWrite(IN PVOID Context, IN BOOLEAN Wait)
Definition: cmcb.c:32
ERESOURCE LAResource
Definition: rfsd.h:394
uint16_t * PWSTR
Definition: typedefs.h:54
#define PARAMETERS_KEY
Definition: ext2fs.h:142
#define DOS_DEVICE_NAME
Definition: ext2fs.h:159
#define IRP_MJ_PNP
Definition: cdrw_usr.h:52
NPAGED_LOOKASIDE_LIST RfsdIrpContextLookasideList
Definition: rfsd.h:414
BOOLEAN NTAPI RfsdFastIoQueryStandardInfo(IN PFILE_OBJECT FileObject, IN BOOLEAN Wait, OUT PFILE_STANDARD_INFORMATION Buffer, OUT PIO_STATUS_BLOCK IoStatus, IN PDEVICE_OBJECT DeviceObject)
Definition: fastio.c:350
LONG NTSTATUS
Definition: precomp.h:26
BOOLEAN NTAPI RfsdNoOpAcquire(IN PVOID Fcb, IN BOOLEAN Wait)
Definition: cmcb.c:156
#define IRP_MJ_SET_VOLUME_INFORMATION
NTSTATUS ExInitializeResourceLite(PULONG res)
Definition: env_spec_w32.h:641
NTSTATUS NTAPI ExDeleteResourceLite(IN PERESOURCE Resource)
Definition: resource.c:1456
struct _RFSD_GLOBAL::@750 CodePage
#define RFSD_POOL_TAG
Definition: rfsd.h:99
VOID NTAPI RfsdReleaseFromLazyWrite(IN PVOID Context)
Definition: cmcb.c:71
PFAST_IO_UNLOCK_ALL FastIoUnlockAll
Definition: iotypes.h:1697
PAGED_LOOKASIDE_LIST RfsdMcbLookasideList
Definition: rfsd.h:417
LIST_ENTRY VcbList
Definition: rfsd.h:410
PFAST_IO_QUERY_NETWORK_OPEN_INFO FastIoQueryNetworkOpenInfo
Definition: iotypes.h:1703
WCHAR DeviceName[]
Definition: adapter.cpp:21
#define PAGE_TABLE
Definition: rfsd.h:442
ULONG ProcessNameOffset
#define PAGED_CODE()
Definition: video.h:57
struct _RFSD_GLOBAL RFSD_GLOBAL
NTSYSAPI VOID NTAPI RtlCopyUnicodeString(PUNICODE_STRING DestinationString, PUNICODE_STRING SourceString)
PDEVICE_OBJECT DeviceObject
Definition: rfsd.h:407
#define EXT3_FORCEWRITING
Definition: ext2fs.h:148
#define WRITING_SUPPORT
Definition: ext2fs.h:146
ERESOURCE CountResource
Definition: rfsd.h:391
NTSTATUS(* NTAPI)(IN PFILE_FULL_EA_INFORMATION EaBuffer, IN ULONG EaLength, OUT PULONG ErrorOffset)
Definition: IoEaTest.cpp:117
NTSTATUS NTAPI DriverEntry(IN PDRIVER_OBJECT DriverObject, IN PUNICODE_STRING RegistryPath)
Definition: init.c:700
PFAST_IO_QUERY_BASIC_INFO FastIoQueryBasicInfo
Definition: iotypes.h:1693
BOOLEAN NTAPI RfsdFastIoUnlockAll(IN PFILE_OBJECT FileObject, IN PEPROCESS Process, OUT PIO_STATUS_BLOCK IoStatus, IN PDEVICE_OBJECT DeviceObject)
Definition: fastio.c:715
struct _FAST_IO_DISPATCH FAST_IO_DISPATCH
ULONG RfsdGetProcessNameOffset(VOID)
PVOID DeviceExtension
Definition: env_spec_w32.h:418
unsigned char BOOLEAN
smooth NULL
Definition: ftsmooth.c:416
RFSD_IDENTIFIER_TYPE Type
Definition: rfsd.h:336
static PDRIVER_OBJECT DriverObject
Definition: template.c:42
VOID NTAPI ExDeletePagedLookasideList(IN PPAGED_LOOKASIDE_LIST Lookaside)
Definition: lookas.c:198
#define DBG(x)
Definition: moztest.c:12
BOOLEAN NTAPI RfsdFastIoUnlockSingle(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)
Definition: fastio.c:610
NPAGED_LOOKASIDE_LIST RfsdCcbLookasideList
Definition: rfsd.h:416
NTSYSAPI NTSTATUS NTAPI RtlUnicodeStringToAnsiString(PANSI_STRING DestinationString, PUNICODE_STRING SourceString, BOOLEAN AllocateDestinationString)
#define IRP_MJ_QUERY_VOLUME_INFORMATION
Definition: rdpdr.c:50
#define IRP_MJ_DIRECTORY_CONTROL
Definition: rdpdr.c:51
FAST_IO_DISPATCH FastIoDispatch
Definition: rfsd.h:397
#define FILE_DEVICE_DISK_FILE_SYSTEM
Definition: winioctl.h:113
#define DBG_FUNC
Definition: ffsdrv.h:1035
NTSTATUS RtlAppendUnicodeToString(IN PUNICODE_STRING Str1, IN PWSTR Str2)
Definition: string_lib.cpp:62
USHORT MaximumLength
Definition: env_spec_w32.h:377
#define DBG_USER
Definition: ffsdrv.h:1032
ULONG Flags
Definition: rfsd.h:431
#define CODEPAGE_MAXLEN
Definition: common.h:159
struct RFSDFS_EXT * PRFSDFS_EXT
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)
Definition: lookas.c:222
PRFSD_GLOBAL RfsdGlobal
Definition: init.c:17
__wchar_t WCHAR
Definition: xmlstorage.h:180
#define NT_SUCCESS(StatCode)
Definition: apphelp.c:32
Definition: rfsd.h:322
PDRIVER_OBJECT DriverObject
Definition: rfsd.h:404
#define IRP_MJ_FILE_SYSTEM_CONTROL
BOOLEAN NTAPI RfsdFastIoQueryBasicInfo(IN PFILE_OBJECT FileObject, IN BOOLEAN Wait, OUT PFILE_BASIC_INFORMATION Buffer, OUT PIO_STATUS_BLOCK IoStatus, IN PDEVICE_OBJECT DeviceObject)
Definition: fastio.c:230
MM_SYSTEMSIZE NTAPI MmQuerySystemSize(VOID)
Definition: mmsup.c:257
PACQUIRE_FOR_LAZY_WRITE AcquireForLazyWrite
Definition: cctypes.h:39
PFAST_IO_UNLOCK_ALL_BY_KEY FastIoUnlockAllByKey
Definition: iotypes.h:1698
NTSYSAPI NTSTATUS WINAPI RtlQueryRegistryValues(ULONG, PCWSTR, PRTL_QUERY_REGISTRY_TABLE, PVOID, PVOID)
ERESOURCE Resource
Definition: rfsd.h:388
BOOLEAN NTAPI RfsdAcquireForReadAhead(IN PVOID Context, IN BOOLEAN Wait)
Definition: cmcb.c:104
PACQUIRE_FOR_READ_AHEAD AcquireForReadAhead
Definition: cctypes.h:41
CACHE_MANAGER_CALLBACKS CacheManagerNoOpCallbacks
Definition: rfsd.h:401
#define ExAllocatePoolWithTag(hernya, size, tag)
Definition: env_spec_w32.h:350
static char DosDeviceName[DEVICE_SIZE]
Definition: lsdd.c:26
PFAST_IO_LOCK FastIoLock
Definition: iotypes.h:1695
#define IRP_MJ_CLOSE
Definition: rdpdr.c:45
BOOLEAN NTAPI RfsdFastIoQueryNetworkOpenInfo(IN PFILE_OBJECT FileObject, IN BOOLEAN Wait, OUT PFILE_NETWORK_OPEN_INFORMATION Buffer, OUT PIO_STATUS_BLOCK IoStatus, IN PDEVICE_OBJECT DeviceObject)
BOOLEAN RfsdQueryParameters(IN PUNICODE_STRING RegistryPath)
Definition: init.c:74
#define RfsdPrint(arg)
Definition: rfsd.h:1069
PDRIVER_UNLOAD DriverUnload
Definition: iotypes.h:2179
PRELEASE_FROM_READ_AHEAD ReleaseFromReadAhead
Definition: cctypes.h:42
#define DBG_ERROR
Definition: ffsdrv.h:1031
VOID NTAPI RfsdReleaseFromReadAhead(IN PVOID Context)
Definition: cmcb.c:134
#define RTL_REGISTRY_ABSOLUTE
Definition: nt_native.h:161
#define EXT3_FORCE_WRITING
Definition: ext2fs.h:583
int RfsdLoadAllNls()
Definition: nls.c:123
ClearFlag(Dirent->Flags, DIRENT_FLAG_NOT_PERSISTENT)
Status
Definition: gdiplustypes.h:24
PFAST_IO_READ FastIoRead
Definition: iotypes.h:1691
IN PDEVICE_OBJECT DeviceObject
Definition: fatprocs.h:1560
VOID NTAPI IoDeleteDevice(IN PDEVICE_OBJECT DeviceObject)
Definition: device.c:1250
RFSD_GLOBAL RfsdGlobal
Definition: rfsd.h:456
NTSTATUS NTAPI RfsdBuildRequest(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
#define SetFlag(_F, _SF)
Definition: ext2fs.h:187
BOOLEAN NTAPI RfsdFastIoCheckIfPossible(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)
Definition: fastio.c:39
PFAST_IO_WRITE FastIoWrite
Definition: iotypes.h:1692
BOOLEAN NTAPI RfsdFastIoLock(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)
Definition: fastio.c:490
VOID NTAPI RfsdNoOpRelease(IN PVOID Fcb)
Definition: cmcb.c:181
#define InitializeListHead(ListHead)
Definition: env_spec_w32.h:944
static DRIVER_UNLOAD DriverUnload
Definition: kbdclass.c:17
PFAST_IO_QUERY_STANDARD_INFO FastIoQueryStandardInfo
Definition: iotypes.h:1694
FAST_IO_DISPATCH FastIoDispatch
Definition: null.c:15
#define IRP_MJ_LOCK_CONTROL
Definition: rdpdr.c:53
#define IRP_MJ_READ
Definition: rdpdr.c:46
NPAGED_LOOKASIDE_LIST RfsdFcbLookasideList
Definition: rfsd.h:415
BOOLEAN NTAPI FsRtlCopyRead(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)
Definition: fastio.c:64
BOOLEAN NTAPI FsRtlCopyWrite(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)
Definition: fastio.c:264
VOID NTAPI IoRegisterFileSystem(IN PDEVICE_OBJECT DeviceObject)
Definition: volume.c:984
struct _FAST_IO_DISPATCH * FastIoDispatch
Definition: iotypes.h:2176
#define IRP_MJ_CLEANUP
BOOLEAN NTAPI RfsdFastIoUnlockAllByKey(IN PFILE_OBJECT FileObject, IN PEPROCESS Process, IN ULONG Key, OUT PIO_STATUS_BLOCK IoStatus, IN PDEVICE_OBJECT DeviceObject)
Definition: fastio.c:808
PDRIVER_DISPATCH MajorFunction[IRP_MJ_MAXIMUM_FUNCTION+1]
Definition: iotypes.h:2180
PRELEASE_FROM_LAZY_WRITE ReleaseFromLazyWrite
Definition: cctypes.h:40
#define IRP_MJ_SET_INFORMATION
Definition: rdpdr.c:49
unsigned int ULONG
Definition: retypes.h:1
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)
Definition: device.c:1031
PFAST_IO_CHECK_IF_POSSIBLE FastIoCheckIfPossible
Definition: iotypes.h:1690
NTSYSAPI VOID NTAPI RtlInitUnicodeString(PUNICODE_STRING DestinationString, PCWSTR SourceString)
#define RtlZeroMemory(Destination, Length)
Definition: typedefs.h:261
_In_ PUNICODE_STRING RegistryPath
Definition: wmip.h:27
ULONG Size
Definition: rfsd.h:337
#define IRP_MJ_WRITE
Definition: rdpdr.c:47
#define DEVICE_NAME
Definition: ext2fs.h:137
#define IRP_MJ_QUERY_INFORMATION
Definition: rdpdr.c:48
VOID NTAPI ExDeleteNPagedLookasideList(IN PNPAGED_LOOKASIDE_LIST Lookaside)
Definition: lookas.c:174
#define RTL_QUERY_REGISTRY_REQUIRED
Definition: nt_native.h:132
#define KdPrint(x)
Definition: env_spec_w32.h:288
struct nls_table * load_nls(char *)
Definition: nls_base.c:218
#define CHECKING_BITMAP
Definition: ext2fs.h:147
#define ExFreePool(addr)
Definition: env_spec_w32.h:352
#define RTL_QUERY_REGISTRY_DIRECT
Definition: nt_native.h:144
BOOLEAN NTAPI RfsdFastIoWrite(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)
#define IRP_MJ_DEVICE_CONTROL
Definition: rdpdr.c:52
ULONG SizeOfFastIoDispatch
Definition: iotypes.h:1689