212 lines
6.4 KiB
C
212 lines
6.4 KiB
C
#define COPY_BUFF_SIZE 4096
|
|
|
|
#define BCS_OEM 1
|
|
#define BCS_UNI 2
|
|
|
|
#define ACCESS_MODE_MASK 0x0007 /* Mask for access mode bits */
|
|
#define ACCESS_READONLY 0x0000 /* open for read-only access */
|
|
#define ACCESS_WRITEONLY 0x0001 /* open for write-only access */
|
|
#define ACCESS_READWRITE 0x0002 /* open for read and write access */
|
|
#define ACCESS_EXECUTE 0x0003 /* open for execute access */
|
|
|
|
#define SHARE_MODE_MASK 0x0070 /* Mask for share mode bits */
|
|
#define SHARE_COMPATIBILITY 0x0000 /* open in compatability mode */
|
|
#define SHARE_DENYREADWRITE 0x0010 /* open for exclusive access */
|
|
#define SHARE_DENYWRITE 0x0020 /* open allowing read-only access */
|
|
#define SHARE_DENYREAD 0x0030 /* open allowing write-only access */
|
|
#define SHARE_DENYNONE 0x0040 /* open allowing other processes access */
|
|
#define SHARE_FCB 0x0070 /* FCB mode open */
|
|
|
|
/** Values for ir_options for VFN_OPEN: */
|
|
|
|
#define ACTION_MASK 0xff /* Open Actions Mask */
|
|
#define ACTION_OPENEXISTING 0x01 /* open an existing file */
|
|
#define ACTION_REPLACEEXISTING 0x02 /* open existing file and set length */
|
|
#define ACTION_CREATENEW 0x10 /* create a new file, fail if exists */
|
|
#define ACTION_OPENALWAYS 0x11 /* open file, create if does not exist */
|
|
#define ACTION_CREATEALWAYS 0x12 /* create a new file, even if it exists */
|
|
|
|
/** Alternate method: bit assignments for the above values: */
|
|
|
|
#define ACTION_EXISTS_OPEN 0x01 // BIT: If file exists, open file
|
|
#define ACTION_TRUNCATE 0x02 // BIT: Truncate file
|
|
#define ACTION_NEXISTS_CREATE 0x10 // BIT: If file does not exist, create
|
|
|
|
|
|
#define OPEN_FLAGS_NOINHERIT 0x0080
|
|
//#define OPEN_FLAGS_NO_CACHE R0_NO_CACHE /* 0x0100 */
|
|
#define OPEN_FLAGS_NO_COMPRESS 0x0200
|
|
#define OPEN_FLAGS_ALIAS_HINT 0x0400
|
|
#define OPEN_FLAGS_REOPEN 0x0800
|
|
#define OPEN_FLAGS_RSVD_1 0x1000 /* NEVER #define this */
|
|
#define OPEN_FLAGS_NOCRITERR 0x2000
|
|
#define OPEN_FLAGS_COMMIT 0x4000
|
|
#define OPEN_FLAGS_RSVD_2 0x8000 /* NEVER #define this */
|
|
#define OPEN_FLAGS_EXTENDED_SIZE 0x00010000
|
|
#define OPEN_FLAGS_RAND_ACCESS_HINT 0x00020000
|
|
#define OPEN_FLAGS_SEQ_ACCESS_HINT 0x00040000
|
|
#define OPEN_EXT_FLAGS_MASK 0x00FF0000
|
|
#define ATTRIB_DEL_ANY 0x0007 // Attrib passed to ring0 delete
|
|
|
|
|
|
#define FLAG_RW_OSLAYER_INSTRUMENT 0x00000001
|
|
#define FLAG_RW_OSLAYER_PAGED_BUFFER 0x00000002
|
|
|
|
typedef HANDLE CSCHFILE;
|
|
typedef int (*PATHPROC)(USHORT *, USHORT *, LPVOID);
|
|
|
|
#define CSCHFILE_NULL 0
|
|
|
|
//typedef USHORT USHORT;
|
|
//typedef ULONG ULONG;
|
|
|
|
#define _FILETIME FILETIME
|
|
#define _WIN32_FIND_DATA WIN32_FIND_DATA
|
|
#define string_t unsigned short *
|
|
|
|
#define FILE_ATTRIBUTE_ALL (FILE_ATTRIBUTE_READONLY| FILE_ATTRIBUTE_HIDDEN \
|
|
| FILE_ATTRIBUTE_SYSTEM | FILE_ATTRIBUTE_DIRECTORY \
|
|
| FILE_ATTRIBUTE_ARCHIVE)
|
|
|
|
#define IsFile(dwAttr) (!((dwAttr) & (FILE_ATTRIBUTE_DIRECTORY|FILE_ATTRIBUTE_DEVICE)))
|
|
|
|
#define CheckHeap(a) {;}
|
|
|
|
#define GetLastErrorLocal() GetLastError()
|
|
#define SetLastErrorLocal(X) SetLastError(X)
|
|
|
|
#ifndef KdPrint
|
|
#ifdef DEBUG
|
|
#define KdPrint(X) PrintFn X
|
|
#else
|
|
#define KdPrint(X)
|
|
#endif
|
|
#endif
|
|
|
|
CSCHFILE CreateFileLocal(LPSTR lpName);
|
|
CSCHFILE OpenFileLocal(LPSTR lpName);
|
|
int DeleteFileLocal(LPSTR lpName, USHORT usAttrib);
|
|
int FileExists (LPSTR lpName);
|
|
long ReadFileLocal (CSCHFILE handle, ULONG pos, LPVOID lpBuff, long lCount);
|
|
long WriteFileLocal (CSCHFILE handle, ULONG pos, LPVOID lpBuff, long lCount);
|
|
long WriteFileInContextLocal (CSCHFILE, ULONG, LPVOID, long);
|
|
ULONG CloseFileLocal (CSCHFILE handle);
|
|
ULONG CloseFileLocalFromHandleCache (CSCHFILE handle);
|
|
int GetFileSizeLocal (CSCHFILE, PULONG);
|
|
int GetDiskFreeSpaceLocal(int indx
|
|
, ULONG *lpuSectorsPerCluster
|
|
, ULONG *lpuBytesPerSector
|
|
, ULONG *lpuFreeClusters
|
|
, ULONG *lpuTotalClusters
|
|
);
|
|
|
|
int GetAttributesLocal (LPSTR, ULONG *);
|
|
int GetAttributesLocalEx (LPSTR lpPath, BOOL fFile, ULONG *lpuAttr);
|
|
int SetAttributesLocal (LPSTR, ULONG);
|
|
int RenameFileLocal (LPSTR, LPSTR);
|
|
int FileLockLocal(CSCHFILE, ULONG, ULONG, ULONG, BOOL);
|
|
|
|
LPVOID AllocMem (ULONG uSize);
|
|
VOID FreeMem (LPVOID lpBuff);
|
|
//VOID CheckHeap(LPVOID lpBuff);
|
|
LPVOID AllocMemPaged (ULONG uSize);
|
|
VOID FreeMemPaged(LPVOID lpBuff);
|
|
|
|
CSCHFILE R0OpenFile (USHORT usOpenFlags, UCHAR bAction, LPSTR lpPath);
|
|
|
|
CSCHFILE OpenFileLocalEx(LPSTR lpPath, BOOL fInstrument);
|
|
long ReadFileLocalEx
|
|
(
|
|
CSCHFILE handle,
|
|
ULONG pos,
|
|
LPVOID pBuff,
|
|
long lCount,
|
|
BOOL fInstrument
|
|
);
|
|
long WriteFileLocalEx(CSCHFILE handle, ULONG pos, LPVOID lpBuff, long lCount, BOOL fInstrument);
|
|
CSCHFILE R0OpenFileEx
|
|
(
|
|
USHORT usOpenFlags,
|
|
UCHAR bAction,
|
|
ULONG ulAttr,
|
|
LPSTR lpPath,
|
|
BOOL fInstrument
|
|
);
|
|
long ReadFileLocalEx2(CSCHFILE handle, ULONG pos, LPVOID lpBuff, long lCount, ULONG flags);
|
|
long WriteFileLocalEx2(CSCHFILE handle, ULONG pos, LPVOID lpBuff, long lCount, ULONG flags);
|
|
|
|
int HexToA(ULONG ulHex, LPSTR lpBuff, int count);
|
|
ULONG AtoHex(LPSTR lpBuff, int count);
|
|
int wstrnicmp(const USHORT *, const USHORT *, ULONG);
|
|
ULONG strmcpy(LPSTR, LPSTR, ULONG);
|
|
int DosToWin32FileSize(ULONG, int *, int *);
|
|
int Win32ToDosFileSize(int, int, ULONG *);
|
|
int CompareTimes(_FILETIME, _FILETIME);
|
|
int CompareSize(long nHighDst, long nLowDst, long nHighSrc, long nLowSrc);
|
|
LPSTR mystrpbrk(LPSTR, LPSTR);
|
|
|
|
int CompareTimesAtDosTimePrecision( _FILETIME ftDst,
|
|
_FILETIME ftSrc
|
|
);
|
|
|
|
VOID
|
|
IncrementFileTime(
|
|
_FILETIME *lpft
|
|
);
|
|
unsigned int
|
|
UniToBCS (
|
|
unsigned char *pStr,
|
|
unsigned short *pUni,
|
|
unsigned int length,
|
|
unsigned int maxLength,
|
|
int charSet
|
|
);
|
|
unsigned int
|
|
BCSToUni (
|
|
unsigned short *pUni,
|
|
unsigned char *pStr,
|
|
unsigned int length,
|
|
int charSet
|
|
);
|
|
|
|
ULONG wstrlen(
|
|
USHORT *lpuStr
|
|
);
|
|
|
|
int
|
|
PUBLIC
|
|
mystrnicmp(
|
|
LPCSTR pStr1,
|
|
LPCSTR pStr2,
|
|
unsigned count
|
|
);
|
|
|
|
|
|
int CreateDirectoryLocal(
|
|
LPSTR lpszPath
|
|
);
|
|
|
|
|
|
ULONG
|
|
GetTimeInSecondsSince1970(
|
|
VOID
|
|
);
|
|
|
|
BOOL
|
|
IterateOnUNCPathElements(
|
|
USHORT *lpuPath,
|
|
PATHPROC lpfn,
|
|
LPVOID lpCookie
|
|
);
|
|
|
|
BOOL
|
|
IsPathUNC(
|
|
USHORT *lpuPath,
|
|
int cntMaxChars
|
|
);
|
|
|
|
|
|
#define JOE_DECL_PROGRESS()
|
|
#define JOE_INIT_PROGRESS(counter,nearargs)
|
|
#define JOE_PROGRESS(bit)
|