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
|
/*
* TAP-Win32 -- A kernel driver to provide virtual tap device functionality
* on Windows. Originally derived from the CIPE-Win32
* project by Damion K. Wilson, with extensive modifications by
* James Yonan.
*
* All source code which derives from the CIPE-Win32 project is
* Copyright (C) Damion K. Wilson, 2003, and is released under the
* GPL version 2 (see below).
*
* All other source code is Copyright (C) 2002-2005 OpenVPN Solutions LLC,
* and is released under the GPL version 2 (see below).
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2
* as published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the 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 (see the file COPYING included with this
* distribution); if not, write to the Free Software Foundation, Inc.,
* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
#ifdef __cplusplus
extern "C" {
#endif
#include "hexdump.h"
#ifndef NDIS_MINIPORT_DRIVER
VOID (*DbgMessage)(char *p_Format, ...) = DisplayDebugString;
VOID DisplayDebugString (char *p_Format, ...)
{
static char l_Buffer [4096];
va_list l_ArgumentList;
va_start (l_ArgumentList, p_Format);
vsprintf (l_Buffer, p_Format, l_ArgumentList);
va_end (l_ArgumentList);
OutputDebugStringA (l_Buffer);
}
#endif
VOID HexDump (unsigned char *p_Buffer, unsigned long p_Size)
{
unsigned long l_Index, l_Idx;
unsigned char l_Row [17];
for (l_Index = l_Row [16] = 0; l_Index < p_Size || l_Index % 16; ++l_Index)
{
if (l_Index % 16 == 0)
DEBUGP (("%05x ", l_Index));
DEBUGP (("%02x ", l_Row [l_Index % 16] = (l_Index < p_Size ? p_Buffer [l_Index] : 0)));
l_Row [l_Index % 16] = IfPrint (l_Row [l_Index % 16]);
if ((l_Index + 1) % 16 == 0)
DEBUGP ((" %s\n", l_Row));
}
DEBUGP (("\n"));
}
#ifdef __cplusplus
}
#endif
|