Loading...
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 | /* * Copyright (c) Eicon Technology Corporation, 2000. * This source file is supplied for the use with Eicon Technology Corporation's range of DIVA Server Adapters. * This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2, or (at your option) any later version. * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY OF ANY KIND WHATSOEVER INCLUDING ANY implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. * You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * */ /*------------------------------------------------------------------*/ /* file: dbgioctl.h */ /*------------------------------------------------------------------*/ #if !defined(__DBGIOCTL_H__) #define __DBGIOCTL_H__ #ifdef NOT_YET_NEEDED /* * The requested operation is passed in arg0 of DbgIoctlArgs, * additional arguments (if any) in arg1, arg2 and arg3. */ typedef struct { ULONG arg0 ; ULONG arg1 ; ULONG arg2 ; ULONG arg3 ; } DbgIoctlArgs ; #define DBG_COPY_LOGS 0 /* copy debugs to user until buffer full */ /* arg1: size threshold */ /* arg2: timeout in milliseconds */ #define DBG_FLUSH_LOGS 1 /* flush pending debugs to user buffer */ /* arg1: internal driver id */ #define DBG_LIST_DRVS 2 /* return the list of registered drivers */ #define DBG_GET_MASK 3 /* get current debug mask of driver */ /* arg1: internal driver id */ #define DBG_SET_MASK 4 /* set/change debug mask of driver */ /* arg1: internal driver id */ /* arg2: new debug mask */ #define DBG_GET_BUFSIZE 5 /* get current buffer size of driver */ /* arg1: internal driver id */ /* arg2: new debug mask */ #define DBG_SET_BUFSIZE 6 /* set new buffer size of driver */ /* arg1: new buffer size */ /* * common internal debug message structure */ typedef struct { unsigned short id ; /* virtual driver id */ unsigned short type ; /* special message type */ unsigned long seq ; /* sequence number of message */ unsigned long size ; /* size of message in bytes */ unsigned long next ; /* offset to next buffered message */ LARGE_INTEGER NTtime ; /* 100 ns since 1.1.1601 */ unsigned char data[4] ;/* message data */ } OldDbgMessage ; typedef struct { LARGE_INTEGER NTtime ; /* 100 ns since 1.1.1601 */ unsigned short size ; /* size of message in bytes */ unsigned short ffff ; /* always 0xffff to indicate new msg */ unsigned short id ; /* virtual driver id */ unsigned short type ; /* special message type */ unsigned long seq ; /* sequence number of message */ unsigned char data[4] ;/* message data */ } DbgMessage ; #endif #define DRV_ID_UNKNOWN 0x0C /* for messages via prtComp() */ #define MSG_PROC_FLAG 0x80 #define MSG_PROC_NO_GET(x) (((x) & MSG_PROC_FLAG) ? (((x) >> 4) & 7) : -1) #define MSG_PROC_NO_SET(x) (MSG_PROC_FLAG | (((x) & 7) << 4)) #define MSG_TYPE_DRV_ID 0x0001 #define MSG_TYPE_FLAGS 0x0002 #define MSG_TYPE_STRING 0x0003 #define MSG_TYPE_BINARY 0x0004 #define MSG_HEAD_SIZE ((unsigned long)&(((DbgMessage *)0)->data[0])) #define MSG_ALIGN(len) (((unsigned long)(len) + MSG_HEAD_SIZE + 3) & ~3) #define MSG_SIZE(pMsg) MSG_ALIGN((pMsg)->size) #define MSG_NEXT(pMsg) ((DbgMessage *)( ((char *)(pMsg)) + MSG_SIZE(pMsg) )) #define OLD_MSG_HEAD_SIZE ((unsigned long)&(((OldDbgMessage *)0)->data[0])) #define OLD_MSG_ALIGN(len) (((unsigned long)(len)+OLD_MSG_HEAD_SIZE+3) & ~3) /* * manifest constants */ #define MSG_FRAME_MAX_SIZE 2150 /* maximum size of B1 frame */ #define MSG_TEXT_MAX_SIZE 1024 /* maximum size of msg text */ #define MSG_MAX_SIZE MSG_ALIGN(MSG_FRAME_MAX_SIZE) #define DBG_MIN_BUFFER_SIZE 0x00008000 /* minimal total buffer size 32 KB */ #define DBG_DEF_BUFFER_SIZE 0x00020000 /* default total buffer size 128 KB */ #define DBG_MAX_BUFFER_SIZE 0x00400000 /* maximal total buffer size 4 MB */ #define DBGDRV_NAME "Diehl_DIMAINT" #define UNIDBG_DRIVER L"\\Device\\Diehl_DIMAINT" /* UNICODE name for kernel */ #define DEBUG_DRIVER "\\\\.\\" DBGDRV_NAME /* traditional string for apps */ #define DBGVXD_NAME "DIMAINT" #define DEBUG_VXD "\\\\.\\" DBGVXD_NAME /* traditional string for apps */ /* * Special IDI interface debug construction */ #define DBG_IDI_SIG_REQ (unsigned long)0xF479C402 #define DBG_IDI_SIG_IND (unsigned long)0xF479C403 #define DBG_IDI_NL_REQ (unsigned long)0xF479C404 #define DBG_IDI_NL_IND (unsigned long)0xF479C405 typedef struct { unsigned long magic_type ; unsigned short data_len ; unsigned char layer_ID ; unsigned char entity_ID ; unsigned char request ; unsigned char ret_code ; unsigned char indication ; unsigned char complete ; unsigned char data[4] ; } DbgIdiAct, *DbgIdiAction ; /* * We want to use the same IOCTL codes in Win95 and WinNT. * The official constructor for IOCTL codes is the CTL_CODE macro * from <winoctl.h> (<devioctl.h> in WinNT DDK environment). * The problem here is that we don't know how to get <winioctl.h> * working in a Win95 DDK environment! */ # ifdef CTL_CODE /*{*/ /* Assert that we have the same idea of the CTL_CODE macro. */ #define CTL_CODE( DeviceType, Function, Method, Access ) ( \ ((DeviceType) << 16) | ((Access) << 14) | ((Function) << 2) | (Method) \ ) # else /* !CTL_CODE */ /*}{*/ /* Use the definitions stolen from <winioctl.h>. */ #define CTL_CODE( DeviceType, Function, Method, Access ) ( \ ((DeviceType) << 16) | ((Access) << 14) | ((Function) << 2) | (Method) \ ) #define METHOD_BUFFERED 0 #define METHOD_IN_DIRECT 1 #define METHOD_OUT_DIRECT 2 #define METHOD_NEITHER 3 #define FILE_ANY_ACCESS 0 #define FILE_READ_ACCESS ( 0x0001 ) // file & pipe #define FILE_WRITE_ACCESS ( 0x0002 ) // file & pipe # endif /* CTL_CODE */ /*}*/ /* * Now we can define WinNT/Win95 DeviceIoControl codes. * * These codes are defined in di_defs.h too, a possible mismatch will be * detected when the dbgtool is compiled. */ #define IOCTL_DRIVER_LNK \ CTL_CODE(0x8001U,0x701,METHOD_OUT_DIRECT,FILE_ANY_ACCESS) #define IOCTL_DRIVER_DBG \ CTL_CODE(0x8001U,0x702,METHOD_OUT_DIRECT,FILE_ANY_ACCESS) #endif /* __DBGIOCTL_H__ */ |