liudaocan80
驱动牛犊
驱动牛犊
  • 注册日期2006-10-16
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分390分
  • 威望40点
  • 贡献值0点
  • 好评度39点
  • 原创分0分
  • 专家分0分
阅读:1597回复:10

数组增大就编译不过??

楼主#
更多 发布于:2007-01-23 09:19
  void do_nothing()
{
#define NAMELEN 2046  
WCHAR name[NAMELEN];
swprintf(name, L"liudaocan");
}
//为什么NAMELEN只能小于或者等于2044
//否则编译出错sfilter.obj : error LNK2019: unresolved external symbol __chkstk referenced in function _do_nothing@0
大家好
wowocock
VIP专家组
VIP专家组
  • 注册日期2002-04-08
  • 最后登录2016-01-09
  • 粉丝16
  • 关注2
  • 积分601分
  • 威望1651点
  • 贡献值1点
  • 好评度1227点
  • 原创分1分
  • 专家分0分
沙发#
发布于:2007-01-23 09:32
l老兄,节省点,堆栈空间不够了.
花开了,然后又会凋零,星星是璀璨的,可那光芒也会消失。在这样 一瞬间,人降生了,笑者,哭着,战斗,伤害,喜悦,悲伤憎恶,爱。一切都只是刹那间的邂逅,而最后都要归入死亡的永眠
GNiDiA
驱动小牛
驱动小牛
  • 注册日期2006-10-11
  • 最后登录2017-10-09
  • 粉丝0
  • 关注0
  • 积分1002分
  • 威望145点
  • 贡献值0点
  • 好评度124点
  • 原创分0分
  • 专家分0分
  • 社区居民
板凳#
发布于:2007-01-23 12:38
就算减少点能编译过,这也是潜在风险,还是从堆里申请吧
liudaocan80
驱动牛犊
驱动牛犊
  • 注册日期2006-10-16
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分390分
  • 威望40点
  • 贡献值0点
  • 好评度39点
  • 原创分0分
  • 专家分0分
地板#
发布于:2007-01-24 08:35
确实是的啊!!
每次过一段时间就莫明其妙的蓝屏:
BAD_POOL_HEADER
PAGE_FAULT_IN_NONPAGEED_AREA
大家好
znsoft
管理员
管理员
  • 注册日期2001-03-23
  • 最后登录2023-10-25
  • 粉丝300
  • 关注6
  • 积分910分
  • 威望14796点
  • 贡献值7点
  • 好评度2410点
  • 原创分5分
  • 专家分100分
  • 社区居民
  • 最爱沙发
  • 社区明星
地下室#
发布于:2007-01-24 09:25
一看就是初哥,想当年,也犯过这样的毛病

都把应用程序开发的那套经验用来开发驱动了.hehe
http://www.zndev.com 免费源码交换网 ----------------------------- 软件创造价值,驱动提供力量! 淡泊以明志,宁静以致远。 ---------------------------------- 勤用搜索,多查资料,先搜再问。
yaolixing
驱动小牛
驱动小牛
  • 注册日期2006-06-27
  • 最后登录2010-07-15
  • 粉丝1
  • 关注0
  • 积分991分
  • 威望135点
  • 贡献值0点
  • 好评度124点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2007-01-27 10:44
我的驱动中就用2K的数组来保存文件头数据的, 怎么没有问题?
下面是我取文件加密头2k数据的代码片段,一直运行良好。      
      UCHAR    DataBuffer[MAX_TRANSFER_SIZE]={'\0'};//用于装文件头部2k字节的内容
       ULONG    DataBufferLength = 0;
       LARGE_INTEGER             FileSize={ 0,0 };

       KdPrint(("IsEncrypted Routine\n"));
        UNREFERENCED_PARAMETER(DeviceObject);
  
       offset.QuadPart=0;

      FileSize= ((PFSRTL_COMMON_FCB_HEADER)((*PPfileObject)->FsContext))->FileSize;
      //如果文件大小不足加密标志的10个字节,那末放弃
      if(FileSize.LowPart < FIRST_ENCRYPT_TAG_LENGTH )
      {
         return FALSE;            
      }
      
      DataBufferLength = (FileSize.LowPart < sizeof(UCHAR)*MAX_TRANSFER_SIZE)?
                         FileSize.LowPart : sizeof(UCHAR)*MAX_TRANSFER_SIZE;
        
       mdl=IoAllocateMdl(
                         DataBuffer,
                         DataBufferLength,//sizeof(UCHAR)*MAX_TRANSFER_SIZE,
                         FALSE,
                         TRUE,
                         0);
      if (mdl == NULL)
        {
            KdPrint(("sfilter!IsEncrypted: IoAllocateMdl failed\n"));
            Status = STATUS_INSUFFICIENT_RESOURCES;
            return FALSE;
        }                
       MmBuildMdlForNonPagedPool(mdl);
                
      KfcRead(
              DeviceObject,
              *PPfileObject,              
              &offset,
              DataBufferLength,//sizeof(UCHAR)*MAX_TRANSFER_SIZE, //2k
              mdl,
              &iosb);
              
        if (!NT_SUCCESS(iosb.Status))
        {
            return FALSE;
        }
znsoft
管理员
管理员
  • 注册日期2001-03-23
  • 最后登录2023-10-25
  • 粉丝300
  • 关注6
  • 积分910分
  • 威望14796点
  • 贡献值7点
  • 好评度2410点
  • 原创分5分
  • 专家分100分
  • 社区居民
  • 最爱沙发
  • 社区明星
6楼#
发布于:2007-01-27 11:28
那是你运气好.hehe

驱动的堆栈非常有限,比较大的数据都需要从堆中分配
http://www.zndev.com 免费源码交换网 ----------------------------- 软件创造价值,驱动提供力量! 淡泊以明志,宁静以致远。 ---------------------------------- 勤用搜索,多查资料,先搜再问。
yaolixing
驱动小牛
驱动小牛
  • 注册日期2006-06-27
  • 最后登录2010-07-15
  • 粉丝1
  • 关注0
  • 积分991分
  • 威望135点
  • 贡献值0点
  • 好评度124点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2007-02-09 12:01
我也想从堆中分配非分页内存,可是读头操作很频繁,这样就容易产生内存碎片。
搂主之所以编译失败,可能是函数被过深的欠套调用,导致堆栈枯竭。
yandong_8212
驱动小牛
驱动小牛
  • 注册日期2006-07-28
  • 最后登录2011-02-11
  • 粉丝0
  • 关注0
  • 积分1046分
  • 威望464点
  • 贡献值1点
  • 好评度173点
  • 原创分0分
  • 专家分1分
8楼#
发布于:2007-02-12 14:32
lookasdide list可以避免碎片
商务MSN:YanDong_8212@163.com
znsoft
管理员
管理员
  • 注册日期2001-03-23
  • 最后登录2023-10-25
  • 粉丝300
  • 关注6
  • 积分910分
  • 威望14796点
  • 贡献值7点
  • 好评度2410点
  • 原创分5分
  • 专家分100分
  • 社区居民
  • 最爱沙发
  • 社区明星
9楼#
发布于:2007-02-12 14:59
旁视表只能分配固定大小的内存块,比如文件名之类..
http://www.zndev.com 免费源码交换网 ----------------------------- 软件创造价值,驱动提供力量! 淡泊以明志,宁静以致远。 ---------------------------------- 勤用搜索,多查资料,先搜再问。
yaolixing
驱动小牛
驱动小牛
  • 注册日期2006-06-27
  • 最后登录2010-07-15
  • 粉丝1
  • 关注0
  • 积分991分
  • 威望135点
  • 贡献值0点
  • 好评度124点
  • 原创分0分
  • 专家分0分
10楼#
发布于:2007-02-23 16:03
我用旁视列表,取文件头数据,系统马上奔溃。所以就一直用栈了。
游客

返回顶部