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