Implemented:

ExSetResourceOwnerPointer, FsRtlDissectDbcs, FsRtlDoesDbcsContainWildCards, FsRtlAcquireFileExclusive, FsRtlReleaseFile, FsRtlGetNextMcbEntry, FsRtlLookupLastMcbEntry, FsRtlLookupMcbEntry, FsRtlRemoveMcbEntry, FsRtlIncrementCcFastReadResourceMiss, FsRtlIncrementCcFastReadNotPossible, FsRtlIncrementCcFastReadWait, FsRtlIncrementCcFastReadNoWait , FsRtlAreNamesEqual, FsRtlDoesNameContainWildCards, IoCreateDriver, IoDeleteDriver

Thanks to Filip for reviewing some of these.

svn path=/trunk/; revision=12408
This commit is contained in:
Alex Ionescu
2004-12-30 18:30:05 +00:00
parent b3ba03af69
commit 88454ea69a
11 changed files with 498 additions and 87 deletions
+48 -2
View File
@@ -1,6 +1,6 @@
#ifndef __INCLUDE_DDK_FSFUNCS_H
#define __INCLUDE_DDK_FSFUNCS_H
/* $Id: fsfuncs.h,v 1.30 2004/11/21 17:47:22 navaraf Exp $ */
/* $Id: fsfuncs.h,v 1.31 2004/12/30 18:30:04 ion Exp $ */
#define FlagOn(x,f) ((x) & (f))
#include <ntos/fstypes.h>
@@ -60,6 +60,7 @@ extern PUCHAR IMPORTED FsRtlLegalAnsiCharacterArray;
#define FSRTL_WILD_CHARACTER 0x08
typedef signed char SCHAR;
VOID
STDCALL
@@ -414,9 +415,54 @@ FsRtlIsTotalDeviceFailure(IN NTSTATUS NtStatus);
#define FsRtlIsUnicodeCharacterWild(C) ( \
(((C) >= 0x40) ? \
FALSE : \
FlagOn((*FsRtlLegalAnsiCharacterArray)[(C)], FSRTL_WILD_CHARACTER )) \
FlagOn((FsRtlLegalAnsiCharacterArray)[(C)], FSRTL_WILD_CHARACTER )) \
)
#define FSRTL_FAT_LEGAL 0x01
#define FSRTL_HPFS_LEGAL 0x02
#define FSRTL_NTFS_LEGAL 0x04
#define FSRTL_WILD_CHARACTER 0x08
#define FSRTL_OLE_LEGAL 0x10
#define FSRTL_NTFS_STREAM_LEGAL (FSRTL_NTFS_LEGAL | FSRTL_OLE_LEGAL)
#define FsRtlIsAnsiCharacterWild(C) ( \
FsRtlTestAnsiCharacter((C), FALSE, FALSE, FSRTL_WILD_CHARACTER) \
)
#define FsRtlIsAnsiCharacterLegalFat(C,WILD_OK) ( \
FsRtlTestAnsiCharacter((C), TRUE, (WILD_OK), FSRTL_FAT_LEGAL) \
)
#define FsRtlIsAnsiCharacterLegalHpfs(C,WILD_OK) ( \
FsRtlTestAnsiCharacter((C), TRUE, (WILD_OK), FSRTL_HPFS_LEGAL) \
)
#define FsRtlIsAnsiCharacterLegalNtfs(C,WILD_OK) ( \
FsRtlTestAnsiCharacter((C), TRUE, (WILD_OK), FSRTL_NTFS_LEGAL) \
)
#define FsRtlIsAnsiCharacterLegalNtfsStream(C,WILD_OK) ( \
FsRtlTestAnsiCharacter((C), TRUE, (WILD_OK), FSRTL_NTFS_STREAM_LEGAL) \
)
#define FsRtlIsAnsiCharacterLegal(C,FLAGS) ( \
FsRtlTestAnsiCharacter((C), TRUE, FALSE, (FLAGS)) \
)
#define FsRtlTestAnsiCharacter(C, DEFAULT_RET, WILD_OK, FLAGS) ( \
((SCHAR)(C) < 0) ? DEFAULT_RET : \
FlagOn(FsRtlLegalAnsiCharacterArray[(int)(C)], \
(FLAGS) | \
((WILD_OK) ? FSRTL_WILD_CHARACTER : 0) ) \
)
#define FsRtlIsLeadDbcsCharacter(DBCS_CHAR) ( \
(BOOLEAN)((UCHAR)(DBCS_CHAR) < 0x80 ? FALSE : \
(NLS_MB_CODE_PAGE_TAG && \
(NLS_OEM_LEAD_BYTE_INFO[(UCHAR)(DBCS_CHAR)] != 0))) \
)
BOOLEAN STDCALL
FsRtlLookupLargeMcbEntry(IN PLARGE_MCB Mcb,
IN LONGLONG Vbn,
+20 -3
View File
@@ -1,4 +1,4 @@
/* $Id: iotypes.h,v 1.72 2004/12/23 12:28:31 ekohl Exp $
/* $Id: iotypes.h,v 1.73 2004/12/30 18:30:04 ion Exp $
*
*/
@@ -801,6 +801,14 @@ typedef BOOLEAN STDCALL_FUNC
OUT PIO_STATUS_BLOCK IoStatus,
IN struct _DEVICE_OBJECT *DeviceObject);
typedef VOID
(*PFAST_IO_ACQUIRE_FILE) (
IN struct _FILE_OBJECT *FileObject);
typedef VOID
(*PFAST_IO_RELEASE_FILE) (
IN struct _FILE_OBJECT *FileObject);
typedef struct _FAST_IO_DISPATCH {
ULONG SizeOfFastIoDispatch;
PFAST_IO_ROUTINE FastIoCheckIfPossible;
@@ -813,8 +821,8 @@ typedef struct _FAST_IO_DISPATCH {
PFAST_IO_ROUTINE FastIoUnlockAll;
PFAST_IO_ROUTINE FastIoUnlockAllByKey;
PFAST_IO_ROUTINE FastIoDeviceControl;
PFAST_IO_ROUTINE AcquireFileForNtCreateSection;
PFAST_IO_ROUTINE ReleaseFileForNtCreateSection;
PFAST_IO_ACQUIRE_FILE AcquireFileForNtCreateSection;
PFAST_IO_RELEASE_FILE ReleaseFileForNtCreateSection;
PFAST_IO_ROUTINE FastIoDetachDevice;
PFAST_IO_ROUTINE FastIoQueryNetworkOpenInfo;
PFAST_IO_ROUTINE AcquireForModWrite;
@@ -878,6 +886,15 @@ struct _FAST_IO_DISPATCH_TABLE
} FAST_IO_DISPATCH_TABLE, * PFAST_IO_DISPATCH_TABLE;
#endif
#define IO_DRIVER_OBJECT 4L
#define DRVO_UNLOAD_INVOKED 0x1L
#define DRVO_LEGACY_DRIVER 0x2L
#define DRVO_BUILTIN_DRIVER 0x4L
#define DRVO_REINIT_REGISTERED 0x8L
#define DRVO_INITIALIZED 0x10L
#define DRVO_BOOTREINIT_REGISTERED 0x20L
#define DRVO_LEGACY_RESOURCES 0x40L
typedef struct _DRIVER_OBJECT
{
CSHORT Type;
+2 -1
View File
@@ -1,4 +1,4 @@
/* $Id: rtl.h,v 1.40 2004/12/16 15:10:00 gdalsnes Exp $
/* $Id: rtl.h,v 1.41 2004/12/30 18:30:03 ion Exp $
*
*/
#ifndef __DDK_RTL_H
@@ -375,6 +375,7 @@ RemoveTailList(
#define IsLastEntry(ListHead, Entry) ((ListHead)->Blink == Entry)
#define RtlEqualMemory(Destination,Source,Length) (!memcmp((Destination), (Source), (Length)))
NTSTATUS
STDCALL