2005.8.10
今天简单的执行了程序.(RRAS下的NAT的静态端口路由功能)
学习心得如下:
1.
在头文件中定义了class CRegOperation :public CRegKey的时候,在cpp文件中可以直接用CRegKey的函数,最好不要再CRegKey rk;这样,通过rk来调用CRegKey的函数.(如果在一个程序中两者兼用会使结果不正确!);
2.
数字本来在计算机中就是16进制表示的
显示的十进制倒是经过转换的
在注册表中也是二进制的
只是注册表编译器显示时转成 16 进制了
之后,当用CRegKey中的SetBinaryValue传到注册表后,可以直接注册表显示中以16进制显示.(而实际在内存中是以2进制存入的)
3.
自己写的10进制转换为16进制显示的函数
WORD ChangeToHex_1( ULONG ulData )
{
ULONG rgux[4] = { 0,0,0,0};
ULONG rguy[4] = { 0,0,0,0};
CString rgs[4];
CString m_s;
rgux[3] = ulData / 16;
rguy[3] = ulData % 16;
ULONG m_ulm;
WORD m_bValue;
int i;
for( i = 3; i ; i-- )
{
rgux[i-1] = rgux[i] / 16;
rguy[i-1] = rgux[i] % 16;
if( rguy[i] == 10 )
{
rguy[i] = 0xa;
rgs[i].Format( "%x", rguy[i] );
}
else if( rguy[i] == 11 )
{
rguy[i] = 0xb;
rgs[i].Format( "%x", rguy[i] );
}
else if( rguy[i] == 12 )
{
rguy[i] = 0xc;
rgs[i].Format( "%x", rguy[i] );
}
else if( rguy[i] == 13 )
{
rguy[i] = 0xd;
rgs[i].Format( "%x", rguy[i] );
}
else if( rguy[i] == 14 )
{
rguy[i] = 0xe;
rgs[i].Format( "%x", rguy[i] );
}
else if( rguy[i] == 15 )
{
rguy[i] = 0xf;
rgs[i].Format( "%x", rguy[i] );
}
else
{
rgs[i].Format( "%x",rguy[i] );
}
if( rguy[i-1] == 10 )
{
rguy[i-1] = 0xa;
rgs[i-1].Format( "%x", rguy[i-1] );
}
else if( rguy[i-1] == 11 )
{
rguy[i-1] = 0xb;
rgs[i-1].Format( "%x", rguy[i-1] );
}
else if( rguy[i-1] == 12 )
{
rguy[i-1] = 0xc;
rgs[i-1].Format( "%x", rguy[i-1] );
}
else if( rguy[i-1] == 13 )
{
rguy[i-1] = 0xd;
rgs[i-1].Format( "%x", rguy[i-1] );
}
else if( rguy[i-1] == 14 )
{
rguy[i-1] = 0xe;
rgs[i-1].Format( "%x", rguy[i-1] );
}
else if( rguy[i-1] == 15 )
{
rguy[i-1] = 0xf;
rgs[i-1].Format( "%x", rguy[i-1] );
}
else
{
rgs[i-1].Format( "%x",rguy[i-1] );
}
}
for( i = 0; i < 4; i++ )
{
m_s += rgs[i];
}
m_ulm = strtoul ( m_s, 0, 16 );
m_bValue = WORD ( m_ulm );
return m_bValue;
}
4.
用Debug通过看内存来调试,(DLL需要建立一个EXE来连接它,再来用这种方法调试)
如:///CRegOperation为DLL中的类, RegEdit为引出的函数,给这个函数前面加上断点,然后点调试按钮,会到调试界面.然后再点调试按钮会继续往下执行(开始执行DLL中的这个函数).此时屏幕左下角是此时各变量的值,左中是各个程序,左上是内存显示.可以把想要查的变量或结构空间拖拽显示到内存的上边的小长条中,这时内存就会显示到这个变量的位置
以下是exe中的一段代码:
CRegOperation ro;
r = ro.RegEdit( uServerType, ulInputPort, ulOutputPort, uIpAddress, a );