|
|
1.1 ! root 1: /* ! 2: * nt_vdd.h ! 3: * ! 4: * VDD services exports and defines ! 5: * ! 6: */ ! 7: ! 8: #ifndef _NT_VDD ! 9: ! 10: #define _NT_VDD ! 11: ! 12: ! 13: /** ! 14: * Basic typedef which would make ULONG and DWORD same ! 15: */ ! 16: ! 17: // typedef DWORD ULONG; ! 18: ! 19: /** ! 20: * IO port service prototypes and data structure definitions ! 21: **/ ! 22: ! 23: /** Basic typedefs of VDD IO hooks **/ ! 24: ! 25: typedef VOID (*PFNVDD_INB) (WORD iport,BYTE * data); ! 26: typedef VOID (*PFNVDD_INW) (WORD iport,WORD * data); ! 27: typedef VOID (*PFNVDD_INSB) (WORD iport,BYTE * data,WORD count); ! 28: typedef VOID (*PFNVDD_INSW) (WORD iport,WORD * data,WORD count); ! 29: typedef VOID (*PFNVDD_OUTB) (WORD iport,BYTE data); ! 30: typedef VOID (*PFNVDD_OUTW) (WORD iport,WORD data); ! 31: typedef VOID (*PFNVDD_OUTSB) (WORD iport,BYTE * data,WORD count); ! 32: typedef VOID (*PFNVDD_OUTSW) (WORD iport,WORD * data,WORD count); ! 33: ! 34: /** Array of handlers for VDD IO hooks. **/ ! 35: ! 36: typedef struct _VDD_IO_HANDLERS { ! 37: PFNVDD_INB inb_handler; ! 38: PFNVDD_INW inw_handler; ! 39: PFNVDD_INSB insb_handler; ! 40: PFNVDD_INSW insw_handler; ! 41: PFNVDD_OUTB outb_handler; ! 42: PFNVDD_OUTW outw_handler; ! 43: PFNVDD_OUTSB outsb_handler; ! 44: PFNVDD_OUTSW outsw_handler; ! 45: } VDD_IO_HANDLERS, *PVDD_IO_HANDLERS; ! 46: ! 47: /** Port Range structure **/ ! 48: ! 49: typedef struct _VDD_IO_PORTRANGE { ! 50: WORD First; ! 51: WORD Last; ! 52: } VDD_IO_PORTRANGE, *PVDD_IO_PORTRANGE; ! 53: ! 54: ! 55: BOOL VDDInstallIOHook ( ! 56: HANDLE hVDD, ! 57: WORD cPortRange, ! 58: PVDD_IO_PORTRANGE pPortRange, ! 59: PVDD_IO_HANDLERS IOhandler ! 60: ); ! 61: ! 62: ! 63: VOID VDDDeInstallIOHook ( ! 64: HANDLE hVdd, ! 65: WORD cPortRange, ! 66: PVDD_IO_PORTRANGE pPortRange ! 67: ); ! 68: ! 69: ! 70: /** ! 71: * DMA service prototypes and data structure definitions ! 72: **/ ! 73: ! 74: ! 75: /** Buffer definition for returning DMA information **/ ! 76: ! 77: typedef struct _VDD_DMA_INFO { ! 78: WORD addr; ! 79: WORD count; ! 80: WORD page; ! 81: BYTE status; ! 82: BYTE mode; ! 83: BYTE mask; ! 84: } VDD_DMA_INFO, *PVDD_DMA_INFO; ! 85: ! 86: /** bits for querying the DMA information **/ ! 87: ! 88: #define VDD_DMA_ADDR 0x01 ! 89: #define VDD_DMA_COUNT 0x02 ! 90: #define VDD_DMA_PAGE 0x04 ! 91: #define VDD_DMA_STATUS 0x05 ! 92: #define VDD_DMA_ALL VDD_DMA_ADDR | VDD_DMA_COUNT | VDD_DMA_PAGE | VDD_DMA_STATUS ! 93: ! 94: ! 95: DWORD VDDRequestDMA ( ! 96: HANDLE hVDD, ! 97: WORD iChannel, ! 98: PVOID Buffer, ! 99: DWORD length ! 100: ); ! 101: ! 102: ! 103: BOOL VDDSetDMA ( ! 104: HANDLE hVDD, ! 105: WORD iChannel, ! 106: WORD fDMA, ! 107: PVDD_DMA_INFO Buffer ! 108: ); ! 109: ! 110: ! 111: BOOL VDDQueryDMA ( ! 112: HANDLE hVDD, ! 113: WORD iChannel, ! 114: PVDD_DMA_INFO pDmaInfo ! 115: ); ! 116: ! 117: ! 118: /** ! 119: * Memory mapped I/O service prototypes and data structure definitions ! 120: **/ ! 121: ! 122: typedef VOID (*PVDD_MEMORY_HANDLER) (PVOID FaultAddress, ULONG RWMode); ! 123: ! 124: BOOL VDDInstallMemoryHook ( ! 125: HANDLE hVDD, ! 126: PVOID pStart, ! 127: DWORD count, ! 128: PVDD_MEMORY_HANDLER MemoryHandler ! 129: ); ! 130: ! 131: BOOL VDDDeInstallMemoryHook ( ! 132: HANDLE hVDD, ! 133: PVOID pStart, ! 134: DWORD count ! 135: ); ! 136: ! 137: BOOL VDDAllocMem( ! 138: HANDLE hVDD, ! 139: PVOID Address, ! 140: DWORD Size ! 141: ); ! 142: ! 143: ! 144: BOOL VDDFreeMem( ! 145: HANDLE hVDD, ! 146: PVOID Address, ! 147: DWORD Size ! 148: ); ! 149: ! 150: /** ! 151: * Misc. service prototypes and data structure definitions ! 152: **/ ! 153: ! 154: ! 155: BOOL VDDIncludeMem( ! 156: HANDLE hVDD, ! 157: PVOID Address, ! 158: DWORD Size ! 159: ); ! 160: ! 161: ! 162: VOID VDDTerminateVDM(); ! 163: ! 164: /** Basic typedefs of VDD User hooks **/ ! 165: ! 166: typedef VOID (*PFNVDD_UCREATE) (USHORT DosPDB); ! 167: typedef VOID (*PFNVDD_UTERMINATE) (USHORT DosPDB); ! 168: typedef VOID (*PFNVDD_UBLOCK) (VOID); ! 169: typedef VOID (*PFNVDD_URESUME) (VOID); ! 170: ! 171: /** Array of handlers for VDD User hooks. **/ ! 172: ! 173: typedef struct _VDD_USER_HANDLERS { ! 174: HANDLE hvdd; ! 175: PFNVDD_UCREATE ucr_handler; ! 176: PFNVDD_UTERMINATE uterm_handler; ! 177: PFNVDD_UBLOCK ublock_handler; ! 178: PFNVDD_URESUME uresume_handler; ! 179: struct _VDD_USER_HANDLERS *next; ! 180: } VDD_USER_HANDLERS, *PVDD_USER_HANDLERS; ! 181: ! 182: /** Function prototypes **/ ! 183: ! 184: BOOL VDDInstallUserHook ( ! 185: HANDLE hVDD, ! 186: PFNVDD_UCREATE Ucr_Handler, ! 187: PFNVDD_UTERMINATE Uterm_Handler, ! 188: PFNVDD_UBLOCK Ublock_handler, ! 189: PFNVDD_URESUME Uresume_handler ! 190: ); ! 191: ! 192: ! 193: BOOL VDDDeInstallUserHook ( ! 194: HANDLE hVdd ! 195: ); ! 196: ! 197: VOID VDDSimulate16(VOID); ! 198: ! 199: ! 200: #endif // ifndef _NT_VDD
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.