softgood
驱动牛犊
驱动牛犊
  • 注册日期2002-11-06
  • 最后登录2003-04-25
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1301回复:8

出现蓝屏,请大侠们相救!!

楼主#
更多 发布于:2002-11-10 08:55
   前几日在本站看了一个贴子(内容如下),插入到自已的程序后,编译是没问题,但测试的时候(w2k下)刚开始还好好的,大约运行十几二十分钟后总会出现蓝屏,然后就是d机了...
   问题出在那?小弟实在查不出,还望各位大侠指点
=====================================================


UINT
CopyPacketData(
PNDIS_PACKET pPacket,
PCHAR pData,
UINT iSize
)
{
UINT iLength;
UINT iPos;
PNDIS_BUFFER pNextBuffer;
PCHAR pBuffer;

iPos = 0;
NdisQueryPacket( pPacket, NULL, NULL, &pNextBuffer, &iLength );
if( iLength > iSize ) return iPos;
while( pNextBuffer ) {
NdisQueryBuffer( pNextBuffer, &pBuffer, &iLength );
if( iLength > iSize - iPos || !pBuffer ) break;
NdisMoveMemory( pData + iPos, pBuffer, iLength );
NdisGetNextBuffer( pNextBuffer, &pNextBuffer );
iPos += iLength;
}

return iPos;
}


/////////////////////////////////////////////////
typedef struct _EthHead
{
EthAddr DestAddr;
EthAddr SourAddr;
unsigned short SrvType;

} EthHead, * PEthHead;

typedef struct _IpHead
{
unsigned char HeaderLength_Version;
unsigned char TypeOfService; // Type of service
unsigned short TotalLength; // total length of the packet
unsigned short Identification; // unique identifier
unsigned short FragmentationFlags; // flags
unsigned char TTL; // Time To Live
unsigned char Protocol; // protocol (TCP, UDP etc)
unsigned short CheckSum; // IP Header checksum
unsigned int sourceIPAddress; // Source address
unsigned int destIPAddress; // Destination Address

} IpHead, *PIpHead;


u_long GetSrcIpFromPacket( PNDIS_PACKET pPacket ) {
PCHAR pData;
UINT iTotal;
PEthHead pEthHdr;
PIpHead pIpHdr;

NdisQueryPacket( pPacket, NULL, NULL, NULL, &iTotal );
pData = ExAllocatePool( NonPagedPool, iTotal );
CopyPacketData( pPacket, pData, iTotal );

pEthHdr = ( PEthHead )pData;
pIpHdr = ( PIpHead )( pData + sizeof( EthHead ) );

return pIpHdr->sourceIPAddress;

}



最新喜欢:

leavepeaceleavep...
程序人生
monkeyy
驱动中牛
驱动中牛
  • 注册日期2001-12-06
  • 最后登录2010-10-10
  • 粉丝0
  • 关注0
  • 积分315分
  • 威望84点
  • 贡献值0点
  • 好评度32点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2002-11-10 09:15
pData = ExAllocatePool( NonPagedPool, iTotal );
pData你最后并没有释放是吗?如果那样的话,系统资源会被你耗净的。你应该申请一块空间然后用上同步措施,供驱动使用。这样就可以防止出现资源泄漏了。



听说老虎会吃人,所以从没想过去摸老虎的屁股。:( :(
softgood
驱动牛犊
驱动牛犊
  • 注册日期2002-11-06
  • 最后登录2003-04-25
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2002-11-10 09:32
pData = ExAllocatePool( NonPagedPool, iTotal );
pData你最后并没有释放是吗?如果那样的话,系统资源会被你耗净的。你应该申请一块空间然后用上同步措施,供驱动使用。这样就可以防止出现资源泄漏了。



 

多谢,小弟愚笨,能具体点吗??
程序人生
monkeyy
驱动中牛
驱动中牛
  • 注册日期2001-12-06
  • 最后登录2010-10-10
  • 粉丝0
  • 关注0
  • 积分315分
  • 威望84点
  • 贡献值0点
  • 好评度32点
  • 原创分0分
  • 专家分0分
地板#
发布于:2002-11-10 09:49
-----------------------------------------
多谢,小弟愚笨,能具体点吗??
--------------------------------------------
靠,10年前还有人说我是傻子呢!我也以为自己真的要傻一生,没想到还上了大学,逃离了傻子的行列!呵呵!

就是给你申请的内存区,加一个自旋锁。你是做什么?具体看看DDK,没什么高深的,只不过大家比你早看些时日罢了!现在看也不晚!
听说老虎会吃人,所以从没想过去摸老虎的屁股。:( :(
softgood
驱动牛犊
驱动牛犊
  • 注册日期2002-11-06
  • 最后登录2003-04-25
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2002-11-10 10:00
-----------------------------------------
多谢,小弟愚笨,能具体点吗??
--------------------------------------------
靠,10年前还有人说我是傻子呢!我也以为自己真的要傻一生,没想到还上了大学,逃离了傻子的行列!呵呵!

就是给你申请的内存区,加一个自旋锁。你是做什么?具体看看DDK,没什么高深的,只不过大家比你早看些时日罢了!现在看也不晚!


DDK看是看了,但是看了一头露水,倒是记得好像在那本书里提到过有这么一回事, 当时没大注意, 现在记不清楚了 ,老兄就不要客气了,解决了问题马上给分。
-------------------------------
呜!呜!我不想翻书了.
程序人生
softgood
驱动牛犊
驱动牛犊
  • 注册日期2002-11-06
  • 最后登录2003-04-25
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2002-11-10 10:16
先离开一下,回来后给加分!!
程序人生
softgood
驱动牛犊
驱动牛犊
  • 注册日期2002-11-06
  • 最后登录2003-04-25
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2002-11-10 15:43
关注!
程序人生
monkeyy
驱动中牛
驱动中牛
  • 注册日期2001-12-06
  • 最后登录2010-10-10
  • 粉丝0
  • 关注0
  • 积分315分
  • 威望84点
  • 贡献值0点
  • 好评度32点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2002-11-10 19:57
老大,写个自旋锁就行了嘛。分配内存然后给分配的内存加上一个自旋锁。就这样的了!
听说老虎会吃人,所以从没想过去摸老虎的屁股。:( :(
softgood
驱动牛犊
驱动牛犊
  • 注册日期2002-11-06
  • 最后登录2003-04-25
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2002-11-10 21:26
老大,写个自旋锁就行了嘛。分配内存然后给分配的内存加上一个自旋锁。就这样的了!

没错, 我还以为是那一个指针乱指了呢!!!
多谢了!!
程序人生
游客

返回顶部