diff --git a/reactos/include/ddk/ccfuncs.h b/reactos/include/ddk/ccfuncs.h index 8b137891791..7a7f67493e3 100644 --- a/reactos/include/ddk/ccfuncs.h +++ b/reactos/include/ddk/ccfuncs.h @@ -1 +1,10 @@ - +#ifndef _NTOS_CCFUNCS_H +#define _NTOS_CCFUNCS_H +/* $Id: ccfuncs.h,v 1.4 2000/03/05 19:17:37 ea Exp $ */ +VOID +STDCALL +CcMdlReadComplete ( + IN PFILE_OBJECT FileObject, + IN PMDL MdlChain + ); +#endif diff --git a/reactos/include/ddk/fsfuncs.h b/reactos/include/ddk/fsfuncs.h index fb4f0b66573..58910d899e8 100644 --- a/reactos/include/ddk/fsfuncs.h +++ b/reactos/include/ddk/fsfuncs.h @@ -1,6 +1,6 @@ #ifndef __INCLUDE_DDK_FSFUNCS_H #define __INCLUDE_DDK_FSFUNCS_H -/* $Id: fsfuncs.h,v 1.7 2000/03/01 22:52:25 ea Exp $ */ +/* $Id: fsfuncs.h,v 1.8 2000/03/05 19:17:37 ea Exp $ */ VOID STDCALL FsRtlAddLargeMcbEntry ( @@ -313,6 +313,76 @@ FsRtlLookupMcbEntry ( DWORD Unknown3, DWORD Unknown4 ); +BOOLEAN +STDCALL +FsRtlMdlRead ( + DWORD Unknown0, + DWORD Unknown1, + DWORD Unknown2, + DWORD Unknown3, + DWORD Unknown4, + DWORD Unknown5 + ); +BOOLEAN +STDCALL +FsRtlMdlReadComplete ( + IN PFILE_OBJECT FileObject, + IN OUT PMDL Mdl + ); +BOOLEAN +STDCALL +FsRtlMdlReadCompleteDev ( + IN PFILE_OBJECT FileObject, + IN PMDL MdlChain, + IN PDEVICE_OBJECT DeviceObject + ); +BOOLEAN +STDCALL +FsRtlMdlReadDev ( + DWORD Unknown0, + DWORD Unknown1, + DWORD Unknown2, + DWORD Unknown3, + DWORD Unknown4, + DWORD Unknown5, + DWORD Unknown6 + ); +BOOLEAN +STDCALL +FsRtlMdlWriteComplete ( + IN PFILE_OBJECT FileObject, + IN PLARGE_INTEGER FileOffset, + IN PMDL MdlChain + ); +BOOLEAN +STDCALL +FsRtlMdlWriteCompleteDev ( + IN PFILE_OBJECT FileObject, + IN PLARGE_INTEGER FileOffset, + IN PMDL MdlChain, + IN PDEVICE_OBJECT DeviceObject + ); +BOOLEAN +STDCALL +FsRtlPrepareMdlWrite ( + DWORD Unknown0, + DWORD Unknown1, + DWORD Unknown2, + DWORD Unknown3, + DWORD Unknown4, + DWORD Unknown5 + ); +BOOLEAN +STDCALL +FsRtlPrepareMdlWriteDev ( + DWORD Unknown0, + DWORD Unknown1, + DWORD Unknown2, + DWORD Unknown3, + DWORD Unknown4, + DWORD Unknown5, + DWORD Unknown6 + ); NTSTATUS STDCALL FsRtlNormalizeNtstatus ( diff --git a/reactos/include/ddk/iofuncs.h b/reactos/include/ddk/iofuncs.h index aadf762d637..5c038b555d8 100644 --- a/reactos/include/ddk/iofuncs.h +++ b/reactos/include/ddk/iofuncs.h @@ -1,4 +1,4 @@ -/* $Id: iofuncs.h,v 1.5 1999/12/26 20:21:02 ea Exp $ */ +/* $Id: iofuncs.h,v 1.6 2000/03/05 19:17:37 ea Exp $ */ /* IO MANAGER ***************************************************************/ BOOLEAN @@ -475,7 +475,11 @@ VOID IoFreeMdl ( PMDL Mdl ); - +PDEVICE_OBJECT +STDCALL +IoGetBaseFileSystemDeviceObject ( + IN PFILE_OBJECT FileObject + ); PCONFIGURATION_INFORMATION IoGetConfigurationInformation (VOID); @@ -524,6 +528,7 @@ IoGetNextIrpStackLocation ( ); PDEVICE_OBJECT +STDCALL IoGetRelatedDeviceObject ( PFILE_OBJECT FileObject ); diff --git a/reactos/include/ddk/iotypes.h b/reactos/include/ddk/iotypes.h index 1e367850690..1397c97d26e 100644 --- a/reactos/include/ddk/iotypes.h +++ b/reactos/include/ddk/iotypes.h @@ -1,4 +1,4 @@ -/* $Id: iotypes.h,v 1.10 2000/02/26 09:58:06 ariadne Exp $ +/* $Id: iotypes.h,v 1.11 2000/03/05 19:17:37 ea Exp $ * */ @@ -393,6 +393,16 @@ typedef struct _DRIVER_EXTENSION UNICODE_STRING ServiceKeyName; } DRIVER_EXTENSION, *PDRIVER_EXTENSION; +#if 0 +typedef +struct _FAST_IO_DISPATCH_TABLE +{ + ULONG Count; + PFAST_IO_DISPATCH Dispatch; + +} FAST_IO_DISPATCH_TABLE, * PFAST_IO_DISPATCH_TABLE; +#endif + typedef struct _DRIVER_OBJECT { CSHORT Type; @@ -405,7 +415,11 @@ typedef struct _DRIVER_OBJECT PDRIVER_EXTENSION DriverExtension; UNICODE_STRING DriverName; PUNICODE_STRING HardwareDatabase; +#if 0 + PFAST_IO_DISPATCH_TABLE FastIoDispatch; +#else PFAST_IO_DISPATCH FastIoDispatch; +#endif PDRIVER_INITIALIZE DriverInit; PDRIVER_STARTIO DriverStartIo; PDRIVER_UNLOAD DriverUnload; diff --git a/reactos/include/internal/cc.h b/reactos/include/internal/cc.h new file mode 100644 index 00000000000..b28ffd93867 --- /dev/null +++ b/reactos/include/internal/cc.h @@ -0,0 +1,10 @@ +#ifndef __INCLUDE_INTERNAL_CC_H +#define __INCLUDE_INTERNAL_CCS_H +/* $Id: cc.h,v 1.1 2000/03/05 19:17:39 ea Exp $ */ +VOID +STDCALL +CcMdlReadCompleteDev ( + IN PMDL MdlChain, + IN PDEVICE_OBJECT DeviceObject + ); +#endif diff --git a/reactos/include/internal/io.h b/reactos/include/internal/io.h index 60a87fd3e42..8517482ce85 100644 --- a/reactos/include/internal/io.h +++ b/reactos/include/internal/io.h @@ -1,4 +1,5 @@ -/* +/* $Id: io.h,v 1.8 2000/03/05 19:17:39 ea Exp $ + * * COPYRIGHT: See COPYING in the top level directory * PROJECT: ReactOS kernel * FILE: include/internal/iomgr.h diff --git a/reactos/ntoskrnl/cc/view.c b/reactos/ntoskrnl/cc/view.c index 659022f81f8..862c6f4198f 100644 --- a/reactos/ntoskrnl/cc/view.c +++ b/reactos/ntoskrnl/cc/view.c @@ -1,4 +1,4 @@ -/* $Id: view.c,v 1.7 2000/02/26 22:41:34 ea Exp $ +/* $Id: view.c,v 1.8 2000/03/05 19:17:40 ea Exp $ * * COPYRIGHT: See COPYING in the top level directory * PROJECT: ReactOS kernel @@ -14,6 +14,7 @@ #include #include #include +#include #define NDEBUG #include @@ -188,4 +189,63 @@ NTSTATUS STDCALL CcInitializeFileCache(PFILE_OBJECT FileObject, } +/********************************************************************** + * NAME INTERNAL + * CcMdlReadCompleteDev@8 + * + * DESCRIPTION + * + * ARGUMENTS + * MdlChain + * DeviceObject + * + * RETURN VALUE + * None. + * + * NOTE + * Used by CcMdlReadComplete@8 and FsRtl + */ +VOID +STDCALL +CcMdlReadCompleteDev ( + IN PMDL MdlChain, + IN PDEVICE_OBJECT DeviceObject + ) +{ + UNIMPLEMENTED; +} + + +/********************************************************************** + * NAME EXPORTED + * CcMdlReadComplete@8 + * + * DESCRIPTION + * + * ARGUMENTS + * + * RETURN VALUE + * None. + * + * NOTE + * From Bo Branten's ntifs.h v13. + */ +VOID +STDCALL +CcMdlReadComplete ( + IN PFILE_OBJECT FileObject, + IN PMDL MdlChain + ) +{ + PDEVICE_OBJECT DeviceObject = NULL; + + DeviceObject = IoGetRelatedDeviceObject (FileObject); + /* FIXME: try fast I/O first */ + CcMdlReadCompleteDev ( + MdlChain, + DeviceObject + ); +} + + /* EOF */ diff --git a/reactos/ntoskrnl/fs/mdl.c b/reactos/ntoskrnl/fs/mdl.c new file mode 100644 index 00000000000..486a7882e06 --- /dev/null +++ b/reactos/ntoskrnl/fs/mdl.c @@ -0,0 +1,273 @@ +/* $Id: mdl.c,v 1.1 2000/03/05 19:17:42 ea Exp $ + * + * reactos/ntoskrnl/fs/mdl.c + * + */ +#include +#include +#include + +/********************************************************************** + * NAME EXPORTED + * FsRtlMdlRead@24 + * + * DESCRIPTION + * + * ARGUMENTS + * + * RETURN VALUE + * + */ +BOOLEAN +STDCALL +FsRtlMdlRead ( + DWORD Unknown0, + DWORD Unknown1, + DWORD Unknown2, + DWORD Unknown3, + DWORD Unknown4, + DWORD Unknown5 + ) +{ + return FALSE; /* FIXME: call FsRtlMdlReadDev ? */ +} + + +/********************************************************************** + * NAME EXPORTED + * FsRtlMdlReadComplete@8 + * + * DESCRIPTION + * + * ARGUMENTS + * + * RETURN VALUE + * + */ +BOOLEAN +STDCALL +FsRtlMdlReadComplete ( + IN PFILE_OBJECT FileObject, + IN OUT PMDL Mdl + ) +{ + PDEVICE_OBJECT DeviceObject [2] = {NULL}; + PDRIVER_OBJECT DriverObject = NULL; + + /* + * Try fast I/O first + */ + DeviceObject [0] = IoGetRelatedDeviceObject (FileObject); + DriverObject = DeviceObject [0]->DriverObject; + if (NULL != DriverObject->FastIoDispatch) + { +#if 0 + if (IRP_MJ_READ <= DriverObject->FastIoDispatch->Count) + { + return FALSE; + } + if (NULL == DriverObject->FastIoDispatch->Dispatch [IRP_MJ_READ]) + { + return FALSE; + } + return DriverObject->FastIoDispatch->Dispatch + [IRP_MJ_READ] ( + Mdl, + NULL /* FIXME: how to get the IRP? */ + ); +#endif + } + /* + * Default I/O path + */ + DeviceObject [1] = IoGetBaseFileSystemDeviceObject (FileObject); + /* + * Did IoGetBaseFileSystemDeviceObject () + * returned the same device + * IoGetRelatedDeviceObject () returned? + */ + if (DeviceObject [1] != DeviceObject [0]) + { +#if 0 + DriverObject = DeviceObject [1]->DriverObject; + if (NULL != DriverObject->FastIoDispatch) + { + /* + * Check if the driver provides + * IRP_MJ_READ. + */ + if (IRP_MJ_READ <= DriverObject->FastIoDispatch->Count) + { + if (NULL == DriverObject->FastIoDispatch->Dispatch [IRP_MJ_READ]) + { + return FALSE; + } + } + } +#endif + DeviceObject [0] = DeviceObject [1]; + } + return FsRtlMdlReadCompleteDev ( + FileObject, + Mdl, + DeviceObject [0] + ); +} + + +/********************************************************************** + * NAME EXPORTED + * FsRtlMdlReadCompleteDev@12 + * + * DESCRIPTION + * + * ARGUMENTS + * + * RETURN VALUE + * + * NOTE + * From Bo Branten's ntifs.h v13. + * (CcMdlReadCompleteDev declared in internal/cc.h) + */ +BOOLEAN +STDCALL +FsRtlMdlReadCompleteDev ( + IN PFILE_OBJECT FileObject, + IN PMDL MdlChain, + IN PDEVICE_OBJECT DeviceObject + ) +{ + FileObject = FileObject; /* unused parameter */ + CcMdlReadCompleteDev (MdlChain, DeviceObject); + return TRUE; +} + + +/********************************************************************** + * NAME EXPORTED + * FsRtlMdlReadDev@28 + * + * DESCRIPTION + * + * ARGUMENTS + * + * RETURN VALUE + * + */ +BOOLEAN +STDCALL +FsRtlMdlReadDev ( + DWORD Unknown0, + DWORD Unknown1, + DWORD Unknown2, + DWORD Unknown3, + DWORD Unknown4, + DWORD Unknown5, + DWORD Unknown6 + ) +{ + return FALSE; +} + + +/********************************************************************** + * NAME EXPORTED + * FsRtlMdlWriteComplete@12 + * + * DESCRIPTION + * + * ARGUMENTS + * + * RETURN VALUE + * + */ +BOOLEAN +STDCALL +FsRtlMdlWriteComplete ( + IN PFILE_OBJECT FileObject, + IN PLARGE_INTEGER FileOffset, + IN PMDL MdlChain + ) +{ + return FALSE; /* FIXME: call FsRtlMdlWriteCompleteDev ? */ +} + + +/********************************************************************** + * NAME EXPORTED + * FsRtlMdlWriteCompleteDev@16 + * + * DESCRIPTION + * + * ARGUMENTS + * + * RETURN VALUE + * + */ +BOOLEAN +STDCALL +FsRtlMdlWriteCompleteDev ( + IN PFILE_OBJECT FileObject, + IN PLARGE_INTEGER FileOffset, + IN PMDL MdlChain, + IN PDEVICE_OBJECT DeviceObject + ) +{ + return FALSE; +} + + +/********************************************************************** + * NAME EXPORTED + * FsRtlPrepareMdlWrite@24 + * + * DESCRIPTION + * + * ARGUMENTS + * + * RETURN VALUE + * + */ +BOOLEAN +STDCALL +FsRtlPrepareMdlWrite ( + DWORD Unknown0, + DWORD Unknown1, + DWORD Unknown2, + DWORD Unknown3, + DWORD Unknown4, + DWORD Unknown5 + ) +{ + return FALSE; /* call FsRtlPrepareMdlWriteDev ? */ +} + + +/********************************************************************** + * NAME EXPORTED + * FsRtlPrepareMdlWriteDev@28 + * + * DESCRIPTION + * + * ARGUMENTS + * + * RETURN VALUE + * + */ +BOOLEAN +STDCALL +FsRtlPrepareMdlWriteDev ( + DWORD Unknown0, + DWORD Unknown1, + DWORD Unknown2, + DWORD Unknown3, + DWORD Unknown4, + DWORD Unknown5, + DWORD Unknown6 + ) +{ + return FALSE; +} + + +/* EOF */ diff --git a/reactos/ntoskrnl/io/device.c b/reactos/ntoskrnl/io/device.c index ebe99f43286..61ebb55b5cc 100644 --- a/reactos/ntoskrnl/io/device.c +++ b/reactos/ntoskrnl/io/device.c @@ -1,4 +1,4 @@ -/* $Id: device.c,v 1.14 2000/01/12 19:02:40 ekohl Exp $ +/* $Id: device.c,v 1.15 2000/03/05 19:17:42 ea Exp $ * * COPYRIGHT: See COPYING in the top level directory * PROJECT: ReactOS kernel @@ -67,11 +67,16 @@ VOID IoDeleteDevice(PDEVICE_OBJECT DeviceObject) } -PDEVICE_OBJECT IoGetRelatedDeviceObject(PFILE_OBJECT FileObject) +PDEVICE_OBJECT +STDCALL +IoGetRelatedDeviceObject ( + IN PFILE_OBJECT FileObject + ) { - return(FileObject->DeviceObject); + return (FileObject->DeviceObject); } + NTSTATUS IoGetDeviceObjectPointer(PUNICODE_STRING ObjectName, ACCESS_MASK DesiredAccess, PFILE_OBJECT* FileObject, diff --git a/reactos/ntoskrnl/io/fs.c b/reactos/ntoskrnl/io/fs.c index 3988797fdfd..f90dac2bf87 100644 --- a/reactos/ntoskrnl/io/fs.c +++ b/reactos/ntoskrnl/io/fs.c @@ -273,3 +273,64 @@ VOID IoUnregisterFileSystem(PDEVICE_OBJECT DeviceObject) } +/********************************************************************** + * NAME EXPORTED + * IoGetBaseFileSystemDeviceObject@4 + * + * DESCRIPTION + * Get the DEVICE_OBJECT associated to + * a FILE_OBJECT. + * + * ARGUMENTS + * FileObject + * + * RETURN VALUE + * + * NOTE + * From Bo Branten's ntifs.h v13. + */ +PDEVICE_OBJECT +STDCALL +IoGetBaseFileSystemDeviceObject ( + IN PFILE_OBJECT FileObject + ) +{ + PDEVICE_OBJECT DeviceObject = NULL; + PVPB Vpb = NULL; + + /* + * If the FILE_OBJECT's VPB is defined, + * get the device from it. + */ + if (NULL != (Vpb = FileObject->Vpb)) + { + if (NULL != (DeviceObject = Vpb->DeviceObject)) + { + /* Vpb->DeviceObject DEFINED! */ + return DeviceObject; + } + } + /* + * If that failed, try the VPB + * in the FILE_OBJECT's DeviceObject. + */ + DeviceObject = FileObject->DeviceObject; + if (NULL == (Vpb = DeviceObject->Vpb)) + { + /* DeviceObject->Vpb UNDEFINED! */ + return DeviceObject; + } + /* + * If that pointer to the VPB is again + * undefined, return directly the + * device object from the FILE_OBJECT. + */ + return ( + (NULL == Vpb->DeviceObject) + ? DeviceObject + : Vpb->DeviceObject + ); +} + + +/* EOF */ diff --git a/reactos/ntoskrnl/io/mdl.c b/reactos/ntoskrnl/io/mdl.c index 65f39df9216..db98c54ab0c 100644 --- a/reactos/ntoskrnl/io/mdl.c +++ b/reactos/ntoskrnl/io/mdl.c @@ -1,4 +1,5 @@ -/* +/* $Id: mdl.c,v 1.4 2000/03/05 19:17:43 ea Exp $ + * * COPYRIGHT: See COPYING in the top level directory * PROJECT: ReactOS kernel * FILE: ntoskrnl/io/mdl.c @@ -66,3 +67,6 @@ VOID IoFreeMdl(PMDL Mdl) MmUnlockPages(Mdl); ExFreePool(Mdl); } + + +/* EOF */ diff --git a/reactos/ntoskrnl/makefile_rex b/reactos/ntoskrnl/makefile_rex index 43c895e1310..077adbdd36a 100644 --- a/reactos/ntoskrnl/makefile_rex +++ b/reactos/ntoskrnl/makefile_rex @@ -1,4 +1,4 @@ -# $Id: makefile_rex,v 1.57 2000/03/04 13:41:56 ekohl Exp $ +# $Id: makefile_rex,v 1.58 2000/03/05 19:17:39 ea Exp $ # # ReactOS Operating System # @@ -59,7 +59,7 @@ EX_OBJECTS = ex/work.o ex/fmutex.o ex/resource.o ex/time.o ex/interlck.o \ ex/stamp.o ex/init.o FS_OBJECTS = fs/dbcsname.o fs/name.o fs/mcb.o fs/unc.o fs/util.o \ - fs/filelock.o fs/pool.o + fs/filelock.o fs/pool.o fs/mdl.o SE_OBJECTS = se/semgr.o se/acl.o se/sid.o se/sd.o se/token.o se/luid.o \ se/priv.o diff --git a/reactos/ntoskrnl/ntoskrnl.def b/reactos/ntoskrnl/ntoskrnl.def index c709d400887..e6c10483aa7 100644 --- a/reactos/ntoskrnl/ntoskrnl.def +++ b/reactos/ntoskrnl/ntoskrnl.def @@ -1,4 +1,4 @@ -; $Id: ntoskrnl.def,v 1.51 2000/03/04 22:00:21 ekohl Exp $ +; $Id: ntoskrnl.def,v 1.52 2000/03/05 19:17:39 ea Exp $ ; ; reactos/ntoskrnl/ntoskrnl.def ; @@ -7,6 +7,7 @@ EXPORTS InitializeListHead CcInitializeFileCache@8 +CcMdlReadComplete@8 CcRequestCachePage@20 CcReleaseCachePage@12 CcReleaseFileCache@8 @@ -120,11 +121,19 @@ FsRtlLookupLargeMcbEntry@32 FsRtlLookupLastLargeMcbEntry@12 FsRtlLookupLastMcbEntry@12 FsRtlLookupMcbEntry@20 +FsRtlMdlRead@24 +FsRtlMdlReadComplete@8 +FsRtlMdlReadCompleteDev@12 +FsRtlMdlReadDev@28 +FsRtlMdlWriteComplete@12 +FsRtlMdlWriteCompleteDev@16 FsRtlNormalizeNtstatus@8 FsRtlNumberOfRunsInLargeMcb@4 FsRtlNumberOfRunsInMcb@4 FsRtlPostPagingFileStackOverflow@12 FsRtlPostStackOverflow@12 +FsRtlPrepareMdlWrite@24 +FsRtlPrepareMdlWriteDev@28 FsRtlPrivateLock@48 FsRtlProcessFileLock@12 FsRtlRegisterUncProvider@12 @@ -152,7 +161,9 @@ IoDeleteController IoDeleteDevice IoDisconnectInterrupt IoFreeController +IoGetBaseFileSystemDeviceObject@4 IoGetCurrentIrpStackLocation +IoGetRelatedDeviceObject@4 IoInitializeDpcRequest IoInitializeTimer IoMarkIrpPending diff --git a/reactos/ntoskrnl/ntoskrnl.edf b/reactos/ntoskrnl/ntoskrnl.edf index 875efd1dd14..a2e0b5af2a4 100644 --- a/reactos/ntoskrnl/ntoskrnl.edf +++ b/reactos/ntoskrnl/ntoskrnl.edf @@ -1,4 +1,4 @@ -; $Id: ntoskrnl.edf,v 1.38 2000/03/04 22:00:21 ekohl Exp $ +; $Id: ntoskrnl.edf,v 1.39 2000/03/05 19:17:40 ea Exp $ ; ; reactos/ntoskrnl/ntoskrnl.def ; @@ -7,6 +7,7 @@ EXPORTS InitializeListHead CcInitializeFileCache=CcInitializeFileCache@8 +CcMdlReadComplete=CcMdlReadComplete@8 CcRequestCachePage=CcRequestCachePage@20 CcReleaseCachePage=CcReleaseCachePage@12 CcReleaseFileCache=CcReleaseFileCache@8 @@ -120,11 +121,19 @@ FsRtlLookupLargeMcbEntry=FsRtlLookupLargeMcbEntry@32 FsRtlLookupLastLargeMcbEntry=FsRtlLookupLastLargeMcbEntry@12 FsRtlLookupLastMcbEntry=FsRtlLookupLastMcbEntry@12 FsRtlLookupMcbEntry=FsRtlLookupMcbEntry@20 +FsRtlMdlRead=FsRtlMdlRead@24 +FsRtlMdlReadComplete=FsRtlMdlReadComplete@8 +FsRtlMdlReadCompleteDev=FsRtlMdlReadCompleteDev@12 +FsRtlMdlReadDev=FsRtlMdlReadDev@28 +FsRtlMdlWriteComplete=FsRtlMdlWriteComplete@12 +FsRtlMdlWriteCompleteDev=FsRtlMdlWriteCompleteDev@16 FsRtlNormalizeNtstatus=FsRtlNormalizeNtstatus@8 FsRtlNumberOfRunsInLargeMcb=FsRtlNumberOfRunsInLargeMcb@4 FsRtlNumberOfRunsInMcb=FsRtlNumberOfRunsInMcb@4 FsRtlPostPagingFileStackOverflow=FsRtlPostPagingFileStackOverflow@12 FsRtlPostStackOverflow=FsRtlPostStackOverflow@12 +FsRtlPrepareMdlWrite=FsRtlPrepareMdlWrite@24 +FsRtlPrepareMdlWriteDev=FsRtlPrepareMdlWriteDev@28 FsRtlPrivateLock=FsRtlPrivateLock@48 FsRtlProcessFileLock=FsRtlProcessFileLock@12 FsRtlRegisterUncProvider=FsRtlRegisterUncProvider@12 @@ -152,7 +161,9 @@ IoDeleteController IoDeleteDevice IoDisconnectInterrupt IoFreeController +IoGetBaseFileSystemDeviceObject=IoGetBaseFileSystemDeviceObject@4 IoGetCurrentIrpStackLocation +IoGetRelatedDeviceObject=IoGetRelatedDeviceObject@4 IoInitializeDpcRequest IoInitializeTimer IoMarkIrpPending