|
|
/*++ BUILD Version: 0001
* * WOW v1.0 * * Copyright (c) 2002, Microsoft Corporation * * dpmf_fio.h * NTVDM Dynamic Patch Module to support File I/O API family * Definitions & macors to support calls into dpmffio.dll * * History: * Created 01-25-2002 by cmjones --*/ #ifndef _DPMF_FIOAPI_H_
#define _DPMF_FIOAPI_H_
#define FIOPFT (DPMFAMTBLS()[FIO_FAM])
#define FIO_SHIM(ord,typ) ((typ)((pFT)->pDpmShmTbls[ord]))
// The order of this list must be the same as the lists below
enum FioFam {DPM_OPENFILE=0, // Win 3.1 set
DPM__LCLOSE, DPM__LOPEN, DPM__LCREAT, DPM__LLSEEK, DPM__LREAD, DPM__LWRITE, DPM__HREAD, DPM__HWRITE, DPM_GETTEMPFILENAME, // End Win 3.1 Set
DPM_AREFILEAPISANSI, // Start Win 9x API set
DPM_CANCELIO, DPM_CLOSEHANDLE, DPM_COPYFILE, DPM_COPYFILEEX, DPM_CREATEDIRECTORY, DPM_CREATEDIRECTORYEX, DPM_CREATEFILE, DPM_DELETEFILE, DPM_FINDCLOSE, DPM_FINDCLOSECHANGENOTIFICATION, DPM_FINDFIRSTCHANGENOTIFICATION, DPM_FINDFIRSTFILE, DPM_FINDNEXTCHANGENOTIFICATION, DPM_FINDNEXTFILE, DPM_FLUSHFILEBUFFERS, DPM_GETCURRENTDIRECTORY, DPM_GETDISKFREESPACE, DPM_GETDISKFREESPACEEX, DPM_GETDRIVETYPE, DPM_GETFILEATTRIBUTES, DPM_GETFILEATTRIBUTESEX, DPM_GETFILEINFORMATIONBYHANDLE, DPM_GETFILESIZE, DPM_GETFILETYPE, DPM_GETFULLPATHNAME, DPM_GETLOGICALDRIVES, DPM_GETLOGICALDRIVESTRINGS, DPM_GETLONGPATHNAME, DPM_GETSHORTPATHNAME, DPM_GETTEMPPATH, DPM_LOCKFILE, DPM_MOVEFILE, DPM_MOVEFILEEX, DPM_QUERYDOSDEVICE, DPM_READFILE, DPM_READFILEEX, DPM_REMOVEDIRECTORY, DPM_SEARCHPATH, DPM_SETCURRENTDIRECTORY, DPM_SETENDOFFILE, DPM_SETFILEAPISTOANSI, DPM_SETFILEAPISTOOEM, DPM_SETFILEATTRIBUTES, DPM_SETFILEPOINTER, DPM_SETVOLUMELABEL, DPM_UNLOCKFILE, DPM_WRITEFILE, DPM_WRITEFILEEX, DPM_GETTEMPFILENAMEW, // Wide char versions for
DPM_COPYFILEW, // generic thunk support
DPM_COPYFILEEXW, DPM_CREATEDIRECTORYW, DPM_CREATEDIRECTORYEXW, DPM_CREATEFILEW, DPM_DELETEFILEW, DPM_FINDFIRSTFILEW, DPM_FINDNEXTFILEW, DPM_GETCURRENTDIRECTORYW, DPM_GETDISKFREESPACEW, DPM_GETDISKFREESPACEEXW, DPM_GETDRIVETYPEW, DPM_GETFILEATTRIBUTESW, DPM_GETFILEATTRIBUTESEXW, DPM_GETFULLPATHNAMEW, DPM_GETLOGICALDRIVESTRINGSW, DPM_GETLONGPATHNAMEW, DPM_GETSHORTPATHNAMEW, DPM_GETTEMPPATHW, DPM_MOVEFILEW, DPM_MOVEFILEEXW, DPM_QUERYDOSDEVICEW, DPM_REMOVEDIRECTORYW, DPM_SEARCHPATHW, DPM_SETCURRENTDIRECTORYW, DPM_SETFILEATTRIBUTESW, DPM_SETVOLUMELABELW, enum_Fio_last}; // DPM_FILEIOCOMPLETIONROUTINE, // application defined
// These types will catch misuse of parameters & ret types
typedef HFILE(*typdpmOpenFile)(LPCSTR, LPOFSTRUCT, UINT); typedef HFILE(*typdpm_lclose)(HFILE); typedef HFILE(*typdpm_lopen)(LPCSTR, int); typedef HFILE(*typdpm_lcreat)(LPCSTR, int); typedef LONG(*typdpm_llseek)(HFILE, LONG, int); typedef UINT(*typdpm_lread)(HFILE, LPVOID, UINT); typedef UINT(*typdpm_lwrite)(HFILE, LPCSTR, UINT); typedef long(*typdpm_hread)(HFILE, LPVOID, long); typedef long(*typdpm_hwrite)(HFILE, LPCSTR, long); typedef UINT(*typdpmGetTempFileNameA)(LPCSTR, LPCSTR, UINT, LPSTR); typedef BOOL(*typdpmAreFileApisANSI)(VOID); typedef BOOL(*typdpmCancelIo)(HANDLE); typedef BOOL(*typdpmCloseHandle)(HANDLE); typedef BOOL(*typdpmCopyFileA)(LPCSTR, LPCSTR, BOOL); typedef BOOL(*typdpmCopyFileExA)(LPCSTR, LPCSTR, LPPROGRESS_ROUTINE, LPVOID, LPBOOL, DWORD); typedef BOOL(*typdpmCreateDirectoryA)(LPCSTR, LPSECURITY_ATTRIBUTES); typedef BOOL(*typdpmCreateDirectoryExA)(LPCSTR, LPCSTR, LPSECURITY_ATTRIBUTES); typedef HANDLE(*typdpmCreateFileA)(LPCSTR, DWORD, DWORD, LPSECURITY_ATTRIBUTES, DWORD, DWORD, HANDLE); typedef BOOL(*typdpmDeleteFileA)(LPCSTR); typedef BOOL(*typdpmFindClose)(HANDLE); typedef BOOL(*typdpmFindCloseChangeNotification)(HANDLE); typedef HANDLE(*typdpmFindFirstChangeNotificationA)(LPCSTR, BOOL, DWORD); typedef HANDLE(*typdpmFindFirstFileA)(LPCSTR, LPWIN32_FIND_DATA); typedef BOOL(*typdpmFindNextChangeNotification)(HANDLE); typedef BOOL(*typdpmFindNextFileA)( HANDLE, LPWIN32_FIND_DATA); typedef BOOL(*typdpmFlushFileBuffers)(HANDLE); typedef DWORD(*typdpmGetCurrentDirectoryA)(DWORD, LPSTR); typedef BOOL(*typdpmGetDiskFreeSpaceA)(LPCSTR, LPDWORD, LPDWORD, LPDWORD, LPDWORD); typedef BOOL(*typdpmGetDiskFreeSpaceExA)(LPCSTR, PULARGE_INTEGER, PULARGE_INTEGER, PULARGE_INTEGER); typedef UINT(*typdpmGetDriveTypeA)(LPCSTR); typedef DWORD(*typdpmGetFileAttributesA)(LPCSTR); typedef BOOL(*typdpmGetFileAttributesExA)(LPCSTR, GET_FILEEX_INFO_LEVELS, LPVOID); typedef BOOL(*typdpmGetFileInformationByHandle)(HANDLE, LPBY_HANDLE_FILE_INFORMATION); typedef DWORD(*typdpmGetFileSize)(HANDLE, LPDWORD); typedef DWORD(*typdpmGetFileType)(HANDLE); typedef DWORD(*typdpmGetFullPathNameA)(LPCSTR, DWORD, LPSTR, LPSTR *); typedef DWORD(*typdpmGetLogicalDrives)(VOID); typedef DWORD(*typdpmGetLogicalDriveStringsA)(DWORD, LPSTR); typedef DWORD(*typdpmGetLongPathNameA)(LPCSTR, LPSTR, DWORD); typedef DWORD(*typdpmGetShortPathNameA)(LPCSTR, LPSTR, DWORD); typedef DWORD(*typdpmGetTempPathA)(DWORD, LPSTR); typedef BOOL(*typdpmLockFile)(HANDLE, DWORD, DWORD, DWORD, DWORD); typedef BOOL(*typdpmMoveFileA)(LPCSTR, LPCSTR); typedef BOOL(*typdpmMoveFileExA)(LPCSTR, LPCSTR, DWORD); typedef DWORD(*typdpmQueryDosDeviceA)(LPCSTR, LPSTR, DWORD); typedef BOOL(*typdpmReadFile)(HANDLE, LPVOID, DWORD, LPDWORD, LPOVERLAPPED); typedef BOOL(*typdpmReadFileEx)(HANDLE, LPVOID, DWORD, LPOVERLAPPED, LPOVERLAPPED_COMPLETION_ROUTINE); typedef BOOL(*typdpmRemoveDirectoryA)(LPCSTR); typedef DWORD(*typdpmSearchPathA)(LPCSTR, LPCSTR, LPCSTR, DWORD, LPSTR, LPSTR *); typedef BOOL(*typdpmSetCurrentDirectoryA)(LPCSTR); typedef BOOL(*typdpmSetEndOfFile)(HANDLE); typedef VOID(*typdpmSetFileApisToANSI)(VOID); typedef VOID(*typdpmSetFileApisToOEM)(VOID); typedef BOOL(*typdpmSetFileAttributesA)(LPCSTR, DWORD); typedef DWORD(*typdpmSetFilePointer)(HANDLE, LONG, PLONG, DWORD); typedef BOOL(*typdpmSetVolumeLabelA)(LPCSTR, LPCSTR); typedef BOOL(*typdpmUnlockFile)(HANDLE, DWORD, DWORD, DWORD, DWORD); typedef BOOL(*typdpmWriteFile)(HANDLE, LPCVOID, DWORD, LPDWORD, LPOVERLAPPED); typedef BOOL(*typdpmWriteFileEx)(HANDLE, LPCVOID, DWORD, LPOVERLAPPED, LPOVERLAPPED_COMPLETION_ROUTINE);
typedef UINT(*typdpmGetTempFileNameW)(LPCWSTR, LPCWSTR, UINT, LPWSTR); typedef BOOL(*typdpmCopyFileW)(LPCWSTR, LPCWSTR, BOOL); typedef BOOL(*typdpmCopyFileExW)(LPCWSTR, LPCWSTR, LPPROGRESS_ROUTINE, LPVOID, LPBOOL, DWORD); typedef BOOL(*typdpmCreateDirectoryW)(LPCWSTR, LPSECURITY_ATTRIBUTES); typedef BOOL(*typdpmCreateDirectoryExW)(LPCWSTR, LPCWSTR, LPSECURITY_ATTRIBUTES); typedef HANDLE(*typdpmCreateFileW)(LPCWSTR, DWORD, DWORD, LPSECURITY_ATTRIBUTES, DWORD, DWORD, HANDLE); typedef BOOL(*typdpmDeleteFileW)(LPCWSTR); typedef HANDLE(*typdpmFindFirstFileW)(LPCWSTR, LPWIN32_FIND_DATAW); typedef BOOL(*typdpmFindNextFileW)( HANDLE, LPWIN32_FIND_DATAW); typedef DWORD(*typdpmGetCurrentDirectoryW)(DWORD, LPWSTR); typedef BOOL(*typdpmGetDiskFreeSpaceW)(LPCWSTR, LPDWORD, LPDWORD, LPDWORD, LPDWORD); typedef BOOL(*typdpmGetDiskFreeSpaceExW)(LPCWSTR, PULARGE_INTEGER, PULARGE_INTEGER, PULARGE_INTEGER); typedef UINT(*typdpmGetDriveTypeW)(LPCWSTR); typedef DWORD(*typdpmGetFileAttributesW)(LPCWSTR); typedef BOOL(*typdpmGetFileAttributesExW)(LPCWSTR, GET_FILEEX_INFO_LEVELS, LPVOID); typedef DWORD(*typdpmGetFullPathNameW)(LPCWSTR, DWORD, LPWSTR, LPWSTR *); typedef DWORD(*typdpmGetLogicalDriveStringsW)(DWORD, LPWSTR); typedef DWORD(*typdpmGetLongPathNameW)(LPCWSTR, LPWSTR, DWORD); typedef DWORD(*typdpmGetShortPathNameW)(LPCWSTR, LPWSTR, DWORD); typedef DWORD(*typdpmGetTempPathW)(DWORD, LPWSTR); typedef BOOL(*typdpmMoveFileW)(LPCWSTR, LPCWSTR); typedef BOOL(*typdpmMoveFileExW)(LPCWSTR, LPCWSTR, DWORD); typedef DWORD(*typdpmQueryDosDeviceW)(LPCWSTR, LPWSTR, DWORD); typedef BOOL(*typdpmRemoveDirectoryW)(LPCWSTR); typedef DWORD(*typdpmSearchPathW)(LPCWSTR, LPCWSTR, LPCWSTR, DWORD, LPWSTR, LPWSTR *); typedef BOOL(*typdpmSetCurrentDirectoryW)(LPCWSTR); typedef BOOL(*typdpmSetFileAttributesW)(LPCWSTR, DWORD); typedef BOOL(*typdpmSetVolumeLabelW)(LPCWSTR, LPCWSTR);
// Macros to dispatch API calls properly
#define DPM_OpenFile(a,b,c) \
((typdpmOpenFile)(FIOPFT->pfn[DPM_OPENFILE]))(a,b,c)
#define DPM__lclose(a) \
((typdpm_lclose)(FIOPFT->pfn[DPM__LCLOSE]))(a)
#define DPM__lopen(a,b) \
((typdpm_lopen)(FIOPFT->pfn[DPM__LOPEN]))(a,b)
#define DPM__lcreat(a,b) \
((typdpm_lcreat)(FIOPFT->pfn[DPM__LCREAT]))(a,b)
#define DPM__llseek(a,b,c) \
((typdpm_llseek)(FIOPFT->pfn[DPM__LLSEEK]))(a,b,c)
#define DPM__lread(a,b,c) \
((typdpm_lread)(FIOPFT->pfn[DPM__LREAD]))(a,b,c)
#define DPM__lwrite(a,b,c) \
((typdpm_lwrite)(FIOPFT->pfn[DPM__LWRITE]))(a,b,c)
#define DPM__hread(a,b,c) \
((typdpm_hread)(FIOPFT->pfn[DPM__HREAD]))(a,b,c)
#define DPM__hwrite(a,b,c) \
((typdpm_hwrite)(FIOPFT->pfn[DPM__HWRITE]))(a,b,c)
#define DPM_GetTempFileName(a,b,c,d) \
((typdpmGetTempFileNameA)(FIOPFT->pfn[DPM_GETTEMPFILENAME]))(a,b,c,d)
#define DPM_AreFileApisANSI() \
((typdpmAreFileApisANSI)(FIOPFT->pfn[DPM_AREFILEAPISANSI]))()
#define DPM_CancelIo(a) \
((typdpmCancelIo)(FIOPFT->pfn[DPM_CANCELIO]))(a)
#define DPM_CloseHandle(a) \
((typdpmCloseHandle)(FIOPFT->pfn[DPM_CLOSEHANDLE]))(a)
#define DPM_CopyFile(a,b,c) \
((typdpmCopyFileA)(FIOPFT->pfn[DPM_COPYFILE]))(a,b,c)
#define DPM_CopyFileEx(a,b,c,d,e,f) \
((typdpmCopyFileExA)(FIOPFT->pfn[DPM_COPYFILEEX]))(a,b,c,d,e,f)
#define DPM_CreateDirectory(a,b) \
((typdpmCreateDirectoryA)(FIOPFT->pfn[DPM_CREATEDIRECTORY]))(a,b)
#define DPM_CreateDirectoryEx(a,b,c) \
((typdpmCreateDirectoryExA)(FIOPFT->pfn[DPM_CREATEDIRECTORYEX]))(a,b,c)
#define DPM_CreateFile(a,b,c,d,e,f,g) \
((typdpmCreateFileA)(FIOPFT->pfn[DPM_CREATEFILE]))(a,b,c,d,e,f,g)
#define DPM_DeleteFile(a) \
((typdpmDeleteFileA)(FIOPFT->pfn[DPM_DELETEFILE]))(a)
#define DPM_FindClose(a) \
((typdpmFindClose)(FIOPFT->pfn[DPM_FINDCLOSE]))(a)
#define DPM_FindCloseChangeNotification(a) \
((typdpmFindCloseChangeNotification)(FIOPFT->pfn[DPM_FINDCLOSECHANGENOTIFICATION]))(a)
#define DPM_FindFirstChangeNotification(a,b,c) \
((typdpmFindFirstChangeNotificationA)(FIOPFT->pfn[DPM_FINDFIRSTCHANGENOTIFICATION]))(a,b,c)
#define DPM_FindFirstFile(a,b) \
((typdpmFindFirstFileA)(FIOPFT->pfn[DPM_FINDFIRSTFILE]))(a,b)
#define DPM_FindNextChangeNotification(a) \
((typdpmFindNextChangeNotification)(FIOPFT->pfn[DPM_FINDNEXTCHANGENOTIFICATION]))(a)
#define DPM_FindNextFile(a,b) \
((typdpmFindNextFileA)(FIOPFT->pfn[DPM_FINDNEXTFILE]))(a,b)
#define DPM_FlushFileBuffers(a) \
((typdpmFlushFileBuffers)(FIOPFT->pfn[DPM_FLUSHFILEBUFFERS]))(a)
#define DPM_GetCurrentDirectory(a,b) \
((typdpmGetCurrentDirectoryA)(FIOPFT->pfn[DPM_GETCURRENTDIRECTORY]))(a,b)
#define DPM_GetDiskFreeSpace(a,b,c,d,e) \
((typdpmGetDiskFreeSpaceA)(FIOPFT->pfn[DPM_GETDISKFREESPACE]))(a,b,c,d,e )
#define DPM_GetDiskFreeSpaceEx(a,b,c,d) \
((typdpmGetDiskFreeSpaceExA)(FIOPFT->pfn[DPM_GETDISKFREESPACEEX]))(a,b,c,d)
#define DPM_GetDriveType(a) \
((typdpmGetDriveTypeA)(FIOPFT->pfn[DPM_GETDRIVETYPE]))(a)
#define DPM_GetFileAttributes(a) \
((typdpmGetFileAttributesA)(FIOPFT->pfn[DPM_GETFILEATTRIBUTES]))(a)
#define DPM_GetFileAttributesEx(a,b,c) \
((typdpmGetFileAttributesExA)(FIOPFT->pfn[DPM_GETFILEATTRIBUTESEX]))(a,b,c)
#define DPM_GetFileInformationByHandle(a,b) \
((typdpmGetFileInformationByHandle)(FIOPFT->pfn[DPM_GETFILEINFORMATIONBYHANDLE]))(a,b)
#define DPM_GetFileSize(a,b) \
((typdpmGetFileSize)(FIOPFT->pfn[DPM_GETFILESIZE]))(a,b)
#define DPM_GetFileType(a) \
((typdpmGetFileType)(FIOPFT->pfn[DPM_GETFILETYPE]))(a)
#define DPM_GetFullPathName(a,b,c,d) \
((typdpmGetFullPathNameA)(FIOPFT->pfn[DPM_GETFULLPATHNAME]))(a,b,c,d)
#define DPM_GetLogicalDrives() \
((typdpmGetLogicalDrives)(FIOPFT->pfn[DPM_GETLOGICALDRIVES]))()
#define DPM_GetLogicalDriveStrings(a,b) \
((typdpmGetLogicalDriveStringsA)(FIOPFT->pfn[DPM_GETLOGICALDRIVESTRINGS]))(a,b)
#define DPM_GetLongPathName(a,b,c) \
((typdpmGetLongPathNameA)(FIOPFT->pfn[DPM_GETLONGPATHNAME]))(a,b,c)
#define DPM_GetShortPathName(a,b,c) \
((typdpmGetShortPathNameA)(FIOPFT->pfn[DPM_GETSHORTPATHNAME]))(a,b,c)
#define DPM_GetTempPath(a,b) \
((typdpmGetTempPathA)(FIOPFT->pfn[DPM_GETTEMPPATH]))(a,b)
#define DPM_LockFile(a,b,c,d,e) \
((typdpmLockFile)(FIOPFT->pfn[DPM_LOCKFILE]))(a,b,c,d,e)
#define DPM_MoveFile(a,b) \
((typdpmMoveFileA)(FIOPFT->pfn[DPM_MOVEFILE]))(a,b)
#define DPM_MoveFileEx(a,b,c) \
((typdpmMoveFileExA)(FIOPFT->pfn[DPM_MOVEFILEEX]))(a,b,c)
#define DPM_QueryDosDevice(a,b,c) \
((typdpmQueryDosDeviceA)(FIOPFT->pfn[DPM_QUERYDOSDEVICE]))(a,b,c)
#define DPM_ReadFile(a,b,c,d,e) \
((typdpmReadFile)(FIOPFT->pfn[DPM_READFILE]))(a,b,c,d,e)
#define DPM_ReadFileEx(a,b,c,d,e) \
((typdpmReadFileEx)(FIOPFT->pfn[DPM_READFILEEX]))(a,b,c,d,e)
#define DPM_RemoveDirectory(a) \
((typdpmRemoveDirectoryA)(FIOPFT->pfn[DPM_REMOVEDIRECTORY]))(a)
#define DPM_SearchPath(a,b,c,d,e,f) \
((typdpmSearchPathA)(FIOPFT->pfn[DPM_SEARCHPATH]))(a,b,c,d,e,f)
#define DPM_SetCurrentDirectory(a) \
((typdpmSetCurrentDirectoryA)(FIOPFT->pfn[DPM_SETCURRENTDIRECTORY]))(a)
#define DPM_SetEndOfFile(a) \
((typdpmSetEndOfFile)(FIOPFT->pfn[DPM_SETENDOFFILE]))(a)
#define DPM_SetFileApisToANSI() \
((typdpmSetFileApisToANSI)(FIOPFT->pfn[DPM_SETFILEAPISTOANSI]))()
#define DPM_SetFileApisToOEM() \
((typdpmSetFileApisToOEM)(FIOPFT->pfn[DPM_SETFILEAPISTOOEM]))()
#define DPM_SetFileAttributes(a,b) \
((typdpmSetFileAttributesA)(FIOPFT->pfn[DPM_SETFILEATTRIBUTES]))(a,b)
#define DPM_SetFilePointer(a,b,c,d) \
((typdpmSetFilePointer)(FIOPFT->pfn[DPM_SETFILEPOINTER]))(a,b,c,d)
#define DPM_SetVolumeLabel(a,b) \
((typdpmSetVolumeLabelA)(FIOPFT->pfn[DPM_SETVOLUMELABEL]))(a,b)
#define DPM_UnlockFile(a,b,c,d,e) \
((typdpmUnlockFile)(FIOPFT->pfn[DPM_UNLOCKFILE]))(a,b,c,d,e)
#define DPM_WriteFile(a,b,c,d,e) \
((typdpmWriteFile)(FIOPFT->pfn[DPM_WRITEFILE]))(a,b,c,d,e)
#define DPM_WriteFileEx(a,b,c,d,e) \
((typdpmWriteFileEx)(FIOPFT->pfn[DPM_WRITEFILEEX]))(a,b,c,d,e)
#define DPM_GetTempFileNameW(a,b,c,d) \
((typdpmGetTempFileNameW)(FIOPFT->pfn[DPM_GETTEMPFILENAMEW]))(a,b,c,d)
#define DPM_CopyFileW(a,b,c) \
((typdpmCopyFileW)(FIOPFT->pfn[DPM_COPYFILEW]))(a,b,c)
#define DPM_CopyFileExW(a,b,c,d,e,f) \
((typdpmCopyFileExW)(FIOPFT->pfn[DPM_COPYFILEEXW]))(a,b,c,d,e,f)
#define DPM_CreateDirectoryW(a,b) \
((typdpmCreateDirectoryW)(FIOPFT->pfn[DPM_CREATEDIRECTORYW]))(a,b)
#define DPM_CreateDirectoryExW(a,b,c) \
((typdpmCreateDirectoryExW)(FIOPFT->pfn[DPM_CREATEDIRECTORYEXW]))(a,b,c)
#define DPM_CreateFileW(a,b,c,d,e,f,g) \
((typdpmCreateFileW)(FIOPFT->pfn[DPM_CREATEFILEW]))(a,b,c,d,e,f,g)
#define DPM_DeleteFileW(a) \
((typdpmDeleteFileW)(FIOPFT->pfn[DPM_DELETEFILEW]))(a)
#define DPM_FindFirstFileW(a,b) \
((typdpmFindFirstFileW)(FIOPFT->pfn[DPM_FINDFIRSTFILEW]))(a,b)
#define DPM_FindNextFileW(a,b) \
((typdpmFindNextFileW)(FIOPFT->pfn[DPM_FINDNEXTFILEW]))(a,b)
#define DPM_GetCurrentDirectoryW(a,b) \
((typdpmGetCurrentDirectoryW)(FIOPFT->pfn[DPM_GETCURRENTDIRECTORYW]))(a,b)
#define DPM_GetDiskFreeSpaceW(a,b,c,d,e) \
((typdpmGetDiskFreeSpaceW)(FIOPFT->pfn[DPM_GETDISKFREESPACEW]))(a,b,c,d,e )
#define DPM_GetDiskFreeSpaceExW(a,b,c,d) \
((typdpmGetDiskFreeSpaceExW)(FIOPFT->pfn[DPM_GETDISKFREESPACEEXW]))(a,b,c,d)
#define DPM_GetDriveTypeW(a) \
((typdpmGetDriveTypeW)(FIOPFT->pfn[DPM_GETDRIVETYPEW]))(a)
#define DPM_GetFileAttributesW(a) \
((typdpmGetFileAttributesW)(FIOPFT->pfn[DPM_GETFILEATTRIBUTESW]))(a)
#define DPM_GetFileAttributesExW(a,b,c) \
((typdpmGetFileAttributesExW)(FIOPFT->pfn[DPM_GETFILEATTRIBUTESEXW]))(a,b,c)
#define DPM_GetFullPathNameW(a,b,c,d) \
((typdpmGetFullPathNameW)(FIOPFT->pfn[DPM_GETFULLPATHNAMEW]))(a,b,c,d)
#define DPM_GetLogicalDriveStringsW(a,b) \
((typdpmGetLogicalDriveStringsW)(FIOPFT->pfn[DPM_GETLOGICALDRIVESTRINGSW]))(a,b)
#define DPM_GetLongPathNameW(a,b,c) \
((typdpmGetLongPathNameW)(FIOPFT->pfn[DPM_GETLONGPATHNAMEW]))(a,b,c)
#define DPM_GetShortPathNameW(a,b,c) \
((typdpmGetShortPathNameW)(FIOPFT->pfn[DPM_GETSHORTPATHNAMEW]))(a,b,c)
#define DPM_GetTempPathW(a,b) \
((typdpmGetTempPathW)(FIOPFT->pfn[DPM_GETTEMPPATHW]))(a,b)
#define DPM_MoveFileW(a,b) \
((typdpmMoveFileW)(FIOPFT->pfn[DPM_MOVEFILEW]))(a,b)
#define DPM_MoveFileExW(a,b,c) \
((typdpmMoveFileExW)(FIOPFT->pfn[DPM_MOVEFILEEXW]))(a,b,c)
#define DPM_QueryDosDeviceW(a,b,c) \
((typdpmQueryDosDeviceW)(FIOPFT->pfn[DPM_QUERYDOSDEVICEW]))(a,b,c)
#define DPM_RemoveDirectoryW(a) \
((typdpmRemoveDirectoryW)(FIOPFT->pfn[DPM_REMOVEDIRECTORYW]))(a)
#define DPM_SearchPathW(a,b,c,d,e,f) \
((typdpmSearchPathW)(FIOPFT->pfn[DPM_SEARCHPATHW]))(a,b,c,d,e,f)
#define DPM_SetCurrentDirectoryW(a) \
((typdpmSetCurrentDirectoryW)(FIOPFT->pfn[DPM_SETCURRENTDIRECTORYW]))(a)
#define DPM_SetFileAttributesW(a,b) \
((typdpmSetFileAttributesW)(FIOPFT->pfn[DPM_SETFILEATTRIBUTESW]))(a,b)
#define DPM_SetVolumeLabelW(a,b) \
((typdpmSetVolumeLabelW)(FIOPFT->pfn[DPM_SETVOLUMELABELW]))(a,b)
/*
//#define DPM_FileIOCompletionRoutine(a,b,c) \ //((typdpmFileIOCompletionRoutine)(FIOPFT->pfn[DPM_FILEIOCOMPLETIONROUTINE]))(a,b,c)
*/
// Macros to dispatch Shimed API calls properly from the dpmfxxx.dll
#define SHM_OpenFile(a,b,c) \
(FIO_SHIM(DPM_OPENFILE, \ typdpmOpenFile))(a,b,c) #define SHM__lclose(a) \
(FIO_SHIM(DPM__LCLOSE, \ typdpm_lclose))(a) #define SHM__lopen(a,b) \
(FIO_SHIM(DPM__LOPEN, \ typdpm_lopen))(a,b) #define SHM__lcreat(a,b) \
(FIO_SHIM(DPM__LCREAT, \ typdpm_lcreat))(a,b) #define SHM__llseek(a,b,c) \
(FIO_SHIM(DPM__LLSEEK, \ typdpm_llseek))(a,b,c) #define SHM__lread(a,b,c) \
(FIO_SHIM(DPM__LREAD, \ typdpm_lread))(a,b,c) #define SHM__lwrite(a,b,c) \
(FIO_SHIM(DPM__LWRITE, \ typdpm_lwrite))(a,b,c) #define SHM__hread(a,b,c) \
(FIO_SHIM(DPM__HREAD, \ typdpm_hread))(a,b,c) #define SHM__hwrite(a,b,c) \
(FIO_SHIM(DPM__HWRITE, \ typdpm_hwrite))(a,b,c) #define SHM_GetTempFileName(a,b,c,d) \
(FIO_SHIM(DPM_GETTEMPFILENAME, \ typdpmGetTempFileNameA))(a,b,c,d) #define SHM_AreFileApisANSI() \
(FIO_SHIM(DPM_AREFILEAPISANSI, \ typdpmAreFileApisANSI))() #define SHM_CancelIo(a) \
(FIO_SHIM(DPM_CANCELIO, \ typdpmCancelIo))(a) #define SHM_CloseHandle(a) \
(FIO_SHIM(DPM_CLOSEHANDLE, \ typdpmCloseHandle))(a) #define SHM_CopyFile(a,b,c) \
(FIO_SHIM(DPM_COPYFILE, \ typdpmCopyFileA))(a,b,c) #define SHM_CopyFileEx(a,b,c,d,e,f) \
(FIO_SHIM(DPM_COPYFILEEX, \ typdpmCopyFileExA))(a,b,c,d,e,f) #define SHM_CreateDirectory(a,b) \
(FIO_SHIM(DPM_CREATEDIRECTORY, \ typdpmCreateDirectoryA))(a,b) #define SHM_CreateDirectoryEx(a,b,c) \
(FIO_SHIM(DPM_CREATEDIRECTORYEX, \ typdpmCreateDirectoryExA))(a,b,c) #define SHM_CreateFile(a,b,c,d,e,f,g) \
(FIO_SHIM(DPM_CREATEFILE, \ typdpmCreateFileA))(a,b,c,d,e,f,g) #define SHM_DeleteFile(a) \
(FIO_SHIM(DPM_DELETEFILE, \ typdpmDeleteFileA))(a) #define SHM_FindClose(a) \
(FIO_SHIM(DPM_FINDCLOSE, \ typdpmFindClose))(a) #define SHM_FindCloseChangeNotification(a) \
(FIO_SHIM(DPM_FINDCLOSECHANGENOTIFICATION, \ typdpmFindCloseChangeNotification))(a) #define SHM_FindFirstChangeNotification(a,b,c) \
(FIO_SHIM(DPM_FINDFIRSTCHANGENOTIFICATION, \ typdpmFindFirstChangeNotificationA))(a,b,c) #define SHM_FindFirstFile(a,b) \
(FIO_SHIM(DPM_FINDFIRSTFILE, \ typdpmFindFirstFileA))(a,b) #define SHM_FindNextChangeNotification(a) \
(FIO_SHIM(DPM_FINDNEXTCHANGENOTIFICATION, \ typdpmFindNextChangeNotification))(a) #define SHM_FindNextFile(a,b) \
(FIO_SHIM(DPM_FINDNEXTFILE, \ typdpmFindNextFileA))(a,b) #define SHM_FlushFileBuffers(a) \
(FIO_SHIM(DPM_FLUSHFILEBUFFERS, \ typdpmFlushFileBuffers))(a) #define SHM_GetCurrentDirectory(a,b) \
(FIO_SHIM(DPM_GETCURRENTDIRECTORY, \ typdpmGetCurrentDirectoryA))(a,b) #define SHM_GetDiskFreeSpace(a,b,c,d,e) \
(FIO_SHIM(DPM_GETDISKFREESPACE, \ typdpmGetDiskFreeSpaceA))(a,b,c,d,e ) #define SHM_GetDiskFreeSpaceEx(a,b,c,d) \
(FIO_SHIM(DPM_GETDISKFREESPACEEX, \ typdpmGetDiskFreeSpaceExA))(a,b,c,d) #define SHM_GetDriveType(a) \
(FIO_SHIM(DPM_GETDRIVETYPE, \ typdpmGetDriveTypeA))(a) #define SHM_GetFileAttributes(a) \
(FIO_SHIM(DPM_GETFILEATTRIBUTES, \ typdpmGetFileAttributesA))(a) #define SHM_GetFileAttributesEx(a,b,c) \
(FIO_SHIM(DPM_GETFILEATTRIBUTESEX, \ typdpmGetFileAttributesExA))(a,b,c) #define SHM_GetFileInformationByHandle(a,b) \
(FIO_SHIM(DPM_GETFILEINFORMATIONBYHANDLE, \ typdpmGetFileInformationByHandle))(a,b) #define SHM_GetFileSize(a,b) \
(FIO_SHIM(DPM_GETFILESIZE, \ typdpmGetFileSize))(a,b) #define SHM_GetFileType(a) \
(FIO_SHIM(DPM_GETFILETYPE, \ typdpmGetFileType))(a) #define SHM_GetFullPathName(a,b,c,d) \
(FIO_SHIM(DPM_GETFULLPATHNAME, \ typdpmGetFullPathNameA))(a,b,c,d) #define SHM_GetLogicalDrives() \
(FIO_SHIM(DPM_GETLOGICALDRIVES, \ typdpmGetLogicalDrives))() #define SHM_GetLogicalDriveStrings(a,b) \
(FIO_SHIM(DPM_GETLOGICALDRIVESTRINGS, \ typdpmGetLogicalDriveStringsA))(a,b) #define SHM_GetLongPathName(a,b,c) \
(FIO_SHIM(DPM_GETLONGPATHNAME, \ typdpmGetLongPathNameA))(a,b,c) #define SHM_GetShortPathName(a,b,c) \
(FIO_SHIM(DPM_GETSHORTPATHNAME, \ typdpmGetShortPathNameA))(a,b,c) #define SHM_GetTempPath(a,b) \
(FIO_SHIM(DPM_GETTEMPPATH, \ typdpmGetTempPathA))(a,b) #define SHM_LockFile(a,b,c,d,e) \
(FIO_SHIM(DPM_LOCKFILE, \ typdpmLockFile))(a,b,c,d,e) #define SHM_MoveFile(a,b) \
(FIO_SHIM(DPM_MOVEFILE, \ typdpmMoveFileA))(a,b) #define SHM_MoveFileEx(a,b,c) \
(FIO_SHIM(DPM_MOVEFILEEX, \ typdpmMoveFileExA))(a,b,c) #define SHM_QueryDosDevice(a,b,c) \
(FIO_SHIM(DPM_QUERYDOSDEVICE, \ typdpmQueryDosDeviceA))(a,b,c) #define SHM_ReadFile(a,b,c,d,e) \
(FIO_SHIM(DPM_READFILE, \ typdpmReadFile))(a,b,c,d,e) #define SHM_ReadFileEx(a,b,c,d,e) \
(FIO_SHIM(DPM_READFILEEX, \ typdpmReadFileEx))(a,b,c,d,e) #define SHM_RemoveDirectory(a) \
(FIO_SHIM(DPM_REMOVEDIRECTORY, \ typdpmRemoveDirectoryA))(a) #define SHM_SearchPath(a,b,c,d,e,f) \
(FIO_SHIM(DPM_SEARCHPATH, \ typdpmSearchPathA))(a,b,c,d,e,f) #define SHM_SetCurrentDirectory(a) \
(FIO_SHIM(DPM_SETCURRENTDIRECTORY, \ typdpmSetCurrentDirectoryA))(a) #define SHM_SetEndOfFile(a) \
(FIO_SHIM(DPM_SETENDOFFILE, \ typdpmSetEndOfFile))(a) #define SHM_SetFileApisToANSI(a) \
(FIO_SHIM(DPM_SETFILEAPISTOANSI, \ typdpmSetFileApisToANSI))(a) #define SHM_SetFileApisToOEM(a) \
(FIO_SHIM(DPM_SETFILEAPISTOOEM, \ typdpmSetFileApisToOEM))(a) #define SHM_SetFileAttributes(a,b) \
(FIO_SHIM(DPM_SETFILEATTRIBUTES, \ typdpmSetFileAttributesA))(a,b) #define SHM_SetFilePointer(a,b,c,d) \
(FIO_SHIM(DPM_SETFILEPOINTER, \ typdpmSetFilePointer))(a,b,c,d) #define SHM_SetVolumeLabel(a,b) \
(FIO_SHIM(DPM_SETVOLUMELABEL, \ typdpmSetVolumeLabelA))(a,b) #define SHM_UnlockFile(a,b,c,d,e) \
(FIO_SHIM(DPM_UNLOCKFILE, \ typdpmUnlockFile))(a,b,c,d,e) #define SHM_WriteFile(a,b,c,d,e) \
(FIO_SHIM(DPM_WRITEFILE, \ typdpmWriteFile))(a,b,c,d,e) #define SHM_WriteFileEx(a,b,c,d,e) \
(FIO_SHIM(DPM_WRITEFILEEX, \ typdpmWriteFileEx))(a,b,c,d,e) #define SHM_GetTempFileNameW(a,b,c,d) \
(FIO_SHIM(DPM_GETTEMPFILENAMEW, \ typdpmGetTempFileNameW))(a,b,c,d) #define SHM_CopyFileW(a,b,c) \
(FIO_SHIM(DPM_COPYFILEW, \ typdpmCopyFileW))(a,b,c) #define SHM_CopyFileExW(a,b,c,d,e,f) \
(FIO_SHIM(DPM_COPYFILEEXW, \ typdpmCopyFileExW))(a,b,c,d,e,f) #define SHM_CreateDirectoryW(a,b) \
(FIO_SHIM(DPM_CREATEDIRECTORYW, \ typdpmCreateDirectoryW))(a,b) #define SHM_CreateDirectoryExW(a,b,c) \
(FIO_SHIM(DPM_CREATEDIRECTORYEXW, \ typdpmCreateDirectoryExW))(a,b,c) #define SHM_CreateFileW(a,b,c,d,e,f,g) \
(FIO_SHIM(DPM_CREATEFILEW, \ typdpmCreateFileW))(a,b,c,d,e,f,g) #define SHM_DeleteFileW(a) \
(FIO_SHIM(DPM_DELETEFILEW, \ typdpmDeleteFileW))(a) #define SHM_FindFirstFileW(a,b) \
(FIO_SHIM(DPM_FINDFIRSTFILEW, \ typdpmFindFirstFileW))(a,b) #define SHM_FindNextFileW(a,b) \
(FIO_SHIM(DPM_FINDNEXTFILEW, \ typdpmFindNextFileW))(a,b) #define SHM_GetCurrentDirectoryW(a,b) \
(FIO_SHIM(DPM_GETCURRENTDIRECTORYW, \ typdpmGetCurrentDirectoryW))(a,b) #define SHM_GetDiskFreeSpaceW(a,b,c,d,e) \
(FIO_SHIM(DPM_GETDISKFREESPACEW, \ typdpmGetDiskFreeSpaceW))(a,b,c,d,e ) #define SHM_GetDiskFreeSpaceExW(a,b,c,d) \
(FIO_SHIM(DPM_GETDISKFREESPACEEXW, \ typdpmGetDiskFreeSpaceExW))(a,b,c,d) #define SHM_GetDriveTypeW(a) \
(FIO_SHIM(DPM_GETDRIVETYPEW, \ typdpmGetDriveTypeW))(a) #define SHM_GetFileAttributesW(a) \
(FIO_SHIM(DPM_GETFILEATTRIBUTESW, \ typdpmGetFileAttributesW))(a) #define SHM_GetFileAttributesExW(a,b,c) \
(FIO_SHIM(DPM_GETFILEATTRIBUTESEXW, \ typdpmGetFileAttributesExW))(a,b,c) #define SHM_GetFullPathNameW(a,b,c,d) \
(FIO_SHIM(DPM_GETFULLPATHNAMEW, \ typdpmGetFullPathNameW))(a,b,c,d) #define SHM_GetLogicalDriveStringsW(a,b) \
(FIO_SHIM(DPM_GETLOGICALDRIVESTRINGSW, \ typdpmGetLogicalDriveStringsW))(a,b) #define SHM_GetLongPathNameW(a,b,c) \
(FIO_SHIM(DPM_GETLONGPATHNAMEW, \ typdpmGetLongPathNameW))(a,b,c) #define SHM_GetShortPathNameW(a,b,c) \
(FIO_SHIM(DPM_GETSHORTPATHNAMEW, \ typdpmGetShortPathNameW))(a,b,c) #define SHM_GetTempPathW(a,b) \
(FIO_SHIM(DPM_GETTEMPPATHW, \ typdpmGetTempPathW))(a,b) #define SHM_MoveFileW(a,b) \
(FIO_SHIM(DPM_MOVEFILEW, \ typdpmMoveFileW))(a,b) #define SHM_MoveFileExW(a,b,c) \
(FIO_SHIM(DPM_MOVEFILEEXW, \ typdpmMoveFileExW))(a,b,c) #define SHM_QueryDosDeviceW(a,b,c) \
(FIO_SHIM(DPM_QUERYDOSDEVICEW, \ typdpmQueryDosDeviceW))(a,b,c) #define SHM_RemoveDirectoryW(a) \
(FIO_SHIM(DPM_REMOVEDIRECTORYW, \ typdpmRemoveDirectoryW))(a) #define SHM_SearchPathW(a,b,c,d,e,f) \
(FIO_SHIM(DPM_SEARCHPATHW, \ typdpmSearchPathW))(a,b,c,d,e,f) #define SHM_SetCurrentDirectoryW(a) \
(FIO_SHIM(DPM_SETCURRENTDIRECTORYW, \ typdpmSetCurrentDirectoryW))(a) #define SHM_SetFileAttributesW(a,b) \
(FIO_SHIM(DPM_SETFILEATTRIBUTESW, \ typdpmSetFileAttributesW))(a,b) #define SHM_SetVolumeLabelW(a,b) \
(FIO_SHIM(DPM_SETVOLUMELABELW, \ typdpmSetVolumeLabelW))(a,b)
#endif // _DPMF_FIOAPI_H_
// These need to be in the same order as the FioFam enum definitions above and
// the DpmFioTbl[] list below.
// This instantiates memory for DpmFioStrs[] in mvdm\v86\monitor\i386\vdpm.c &
// in mvdm\wow32\wdpm.c
#ifdef _DPM_COMMON_
const char *DpmFioStrs[] = {"OpenFile", "_lclose", "_lopen", "_lcreat", "_llseek", "_lread", "_lwrite", "_hread", "_hwrite", "GetTempFileNameA", "AreFileApisANSI", "CancelIo", "CloseHandle", "CopyFileA", "CopyFileExA", "CreateDirectoryA", "CreateDirectoryExA", "CreateFileA", "DeleteFileA", "FindClose", "FindCloseChangeNotification", "FindFirstChangeNotificationA", "FindFirstFileA", "FindNextChangeNotification", "FindNextFileA", "FlushFileBuffers", "GetCurrentDirectoryA", "GetDiskFreeSpaceA", "GetDiskFreeSpaceExA", "GetDriveTypeA", "GetFileAttributesA", "GetFileAttributesExA", "GetFileInformationByHandle", "GetFileSize", "GetFileType", "GetFullPathNameA", "GetLogicalDrives", "GetLogicalDriveStringsA", "GetLongPathNameA", "GetShortPathNameA", "GetTempPathA", "LockFile", "MoveFileA", "MoveFileExA", "QueryDosDeviceA", "ReadFile", "ReadFileEx", "RemoveDirectoryA", "SearchPathA", "SetCurrentDirectoryA", "SetEndOfFile", "SetFileApisToANSI", "SetFileApisToOEM", "SetFileAttributesA", "SetFilePointer", "SetVolumeLabelA", "UnlockFile", "WriteFile", "WriteFileEx", "GetTempFileNameW", "CopyFileW", "CopyFileExW", "CreateDirectoryW", "CreateDirectoryExW", "CreateFileW", "DeleteFileW", "FindFirstFileW", "FindNextFileW", "GetCurrentDirectoryW", "GetDiskFreeSpaceW", "GetDiskFreeSpaceExW", "GetDriveTypeW", "GetFileAttributesW", "GetFileAttributesExW", "GetFullPathNameW", "GetLogicalDriveStringsW", "GetLongPathNameW", "GetShortPathNameW", "GetTempPathW", "MoveFileW", "MoveFileExW", "QueryDosDeviceW", "RemoveDirectoryW", "SearchPathW", "SetCurrentDirectoryW", "SetFileAttributesW", "SetVolumeLabelW"}; // "FileIOCompletionRoutine",
// These need to be in the same order as the FioFam enum definitions and the
// the DpmFioStrs[] list above.
// This instantiates memory for DpmFioTbl[] in mvdm\v86\monitor\i386\vdpm.c
PVOID DpmFioTbl[] = {OpenFile, _lclose, _lopen, _lcreat, _llseek, _lread, _lwrite, _hread, _hwrite, GetTempFileNameA, AreFileApisANSI, CancelIo, CloseHandle, CopyFileA, CopyFileExA, CreateDirectoryA, CreateDirectoryExA, CreateFileA, DeleteFileA, FindClose, FindCloseChangeNotification, FindFirstChangeNotificationA, FindFirstFileA, FindNextChangeNotification, FindNextFileA, FlushFileBuffers, GetCurrentDirectoryA, GetDiskFreeSpaceA, GetDiskFreeSpaceExA, GetDriveTypeA, GetFileAttributesA, GetFileAttributesExA, GetFileInformationByHandle, GetFileSize, GetFileType, GetFullPathNameA, GetLogicalDrives, GetLogicalDriveStringsA, GetLongPathNameA, GetShortPathNameA, GetTempPathA, LockFile, MoveFileA, MoveFileExA, QueryDosDeviceA, ReadFile, ReadFileEx, RemoveDirectoryA, SearchPathA, SetCurrentDirectoryA, SetEndOfFile, SetFileApisToANSI, SetFileApisToOEM, SetFileAttributesA, SetFilePointer, SetVolumeLabelA, UnlockFile, WriteFile, WriteFileEx, GetTempFileNameW, CopyFileW, CopyFileExW, CreateDirectoryW, CreateDirectoryExW, CreateFileW, DeleteFileW, FindFirstFileW, FindNextFileW, GetCurrentDirectoryW, GetDiskFreeSpaceW, GetDiskFreeSpaceExW, GetDriveTypeW, GetFileAttributesW, GetFileAttributesExW, GetFullPathNameW, GetLogicalDriveStringsW, GetLongPathNameW, GetShortPathNameW, GetTempPathW, MoveFileW, MoveFileExW, QueryDosDeviceW, RemoveDirectoryW, SearchPathW, SetCurrentDirectoryW, SetFileAttributesW, SetVolumeLabelW}; // FileIOCompletionRoutine,
#define NUM_HOOKED_FIO_APIS ((sizeof DpmFioTbl)/(sizeof DpmFioTbl[0]))
// This instantiates memory for DpmFioFam in mvdm\v86\monitor\i386\vdpm.c
FAMILY_TABLE DpmFioFam = {NUM_HOOKED_FIO_APIS, 0, 0, 0, 0, DpmFioTbl};
#endif // _DPM_COMMON_
|