📄 vdkutil.h
字号:
/* vdkutil.h header for platform dependent utility functions Copyright (C) 2003 Ken Kato*/#ifndef _VDK_UTIL_H_#define _VDK_UTIL_H_#ifdef __cplusplusextern "C" {#endif//*******************************************************************// common utility functions//*******************************************************************//// Get full path of a file//VDKSTAT VdkFullPath( PCHAR FullPath, ULONG BufSize, PCHAR FileName);//// open an existing file//VDKSTAT VdkOpenFile( HANDLE *FileHandle, PCHAR FileName, ULONG NameLen, ULONG ReadOnly);//// create a new file//VDKSTAT VdkCreateFile( HANDLE *FileHandle, PCHAR FileName, BOOL Force);//// check file attributes//VDKSTAT VdkCheckAttribute( HANDLE FileHandle);//// get file size in number of sectors//VDKSTAT VdkGetFileSize( HANDLE FileHandle, PINT64 FileSize);//// set file size in number of sectors//VDKSTAT VdkSetFileSize( HANDLE FileHandle, INT64 FileSize);//// seek by byte offset//VDKSTAT VdkSeekFile( HANDLE FileHandle, INT64 Offset);//// write to file at specified byte offset//VDKSTAT VdkWriteFileAt( HANDLE FileHandle, INT64 Offset, PVOID Buffer, ULONG Length, PULONG Result);//// read from file at specified byte offset//VDKSTAT VdkReadFileAt( HANDLE FileHandle, INT64 Offset, PVOID Buffer, ULONG Length, PULONG Result);//*******************************************************************// other utility macro / functions//*******************************************************************#ifdef VDK_KERNEL_DRIVER#define VdkCloseFile(a) ZwClose(a)#define VdkAllocMem(a) ExAllocatePool(NonPagedPool,a)#define VdkFreeMem(a) ExFreePool(a)#define VdkZeroMem(a,b) RtlZeroMemory(a,b)#define VdkCopyMem(a,b,c) RtlCopyMemory(a,b,c)#elif defined(_WIN32)#define VdkCloseFile(a) CloseHandle(a)#define VdkGetAttribute(a) GetFileAttributes(a)#define VdkAllocMem(a) malloc(a)#define VdkFreeMem(a) free(a)#define VdkZeroMem(a,b) ZeroMemory(a,b)#define VdkCopyMem(a,b,c) CopyMemory(a,b,c)#define VdkCmpNoCaseN(a,b,c) _strnicmp(a,b,c)#define VdkCmpNoCase(a,b) _stricmp(a,b)#define VdkLastError() GetLastError()const char *VdkStatusStr(VDKSTAT Status);void PrintMessage(DWORD msg,...);int InputChar(DWORD prompt, const char *accept);#elif defined(__linux__)#define VdkCloseFile(a) close(a)#define VdkGetAttribute(a) (0)#define VdkAllocMem(a) malloc(a)#define VdkFreeMem(a) free(a)#define VdkZeroMem(a,b) memset(a,0,b)#define VdkCopyMem(a,b,c) memcpy(a,b,c)#define VdkCmpNoCaseN(a,b,c) strncasecmp(a,b,c)#define VdkCmpNoCase(a,b) strcasecmp(a,b)#define VdkLastError() errno#define VdkStatusStr(a) strerror(a)#define PrintMessage printfint InputChar(const char *prompt, const char *accept);#define UNREFERENCED_PARAMETER(x)#define FIELD_OFFSET(type, field) ((long)&(((type *)0)->field))#define MAX_PATH PATH_MAX#endif//*******************************************************************// debug utility//*******************************************************************#ifdef VDK_DEBUGextern unsigned long TraceFlags;extern const char *TraceFile;extern unsigned long TraceLine;#define VDKTRACE(LEVEL,STRING) \ if ((TraceFlags & (LEVEL)) == (LEVEL)) { \ TraceFile = __FILE__; \ TraceLine = __LINE__; \ VdkTrace STRING; \ }#ifdef VDK_KERNEL_DRIVERPCSTR VdkStatusStr(NTSTATUS status);#define VdkTrace DbgPrint#else // VDK_KERNEL_DRIVERvoid VdkTrace(const char *,...);#endif // VDK_KERNEL_DRIVER#else // VDK_DEBUG#define VDKTRACE(LEVEL,STRING)#endif // VDK_DEBUG#ifdef __cplusplus}#endif#endif // _VDK_UTIL_H_
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -