-
幸会哦!
-
使能擦除后,在要擦除的页的任何位置有个写操作就完成了页擦除,不用你指定页的起始地址和结束地址。应该是只能页擦除,要是信息存储区的话还可以段擦除。你可以仔细看相关芯片型号资料的关于FLASH的内容,里面有详细的说明
-
IoGetDeviceObjectPointer函数从下层的设备对象名称来获得下层设备指针。该函数造成了对下层设备对象以及下层设备对象所对应的文件对象的引用。如果本层驱动在卸载之前对下层的设备对象的引用还没有消除,则下层驱动的卸载会被停止。因此必须要消除对下层设备对象的引用。
但是程序一般不会直接对下层设备对象的引用减少。原因在于当文件对象的引用减小后,设备对象的引用也会相应自动减小。因此只要减少对文件对象的引用就可以减少文件对象和设备对象两个对象的引用。而如果单独再减少对设备对象的引用,会导致两次减少对设备对象的引用。但是,如果在本驱动的卸载例程之前减少了对文件对象的引用,从而导致设备对象的引用降为0,则有可能导致下层驱动对象的过早删除。因此,如果想在卸载例程之外减小对文件对象的引用,又要在减少对文件对象的引用之前对设备对象增加一次额外的引用,然后在减少对文件对象的引用之后再减小对设备对象的引用。
事实上,IoGetDeviceObjectPointer返回的并不是下层设备对象的指针。而是该设备堆栈中顶层的设备对象的指针。当然,IRP会一层一层的转发下去,因此下层驱动会得到该IRP。
IoGetDeviceObjectPointer在内部干了如下的操作。ZwCreateFile ObReferenceObjectByHandle ZwClose IoGetRelatedDeviceObject。在IoGetDeviceObjectPointer后如果调用了IoCallDriver发送私有IRP,然后又调用ObDereferenceObject,这一系列的操作会引发如下的IRP被发送到目标设备对象。IRP_MJ_CREATE IRP_MJ_CLEANUP IRP_MJ_DEVICECONTROL IRP_MJ_CLOSE。当有文件句柄被创建时,IRP_MJ_CREATE被发送;当所有文件句柄关闭时,IRP_MJ_CLEANUP被发送;IRP_MJ_DEVICECONTROL对应私有IRP发送;IRP_MJ_CLOSE则是ObDereferenceObject后文件对象的引用为0后被发送。由此可看出,IRP_MJ_CLEANUP是文件对象句柄计数为0时被发送,而IRP_MJ_CLOSE是文件对象的引用计数为0时发送。
http://wangjiajun53880.blog.163.com/blog/static/11700139420094187540796/
-
引用 1 楼 jbb0523 的回复:
只能友情帮顶,百度谷歌后都没结果。。。
哈哈,,这个专业术语,太少用了,连网络都帮不上忙,,,没办法,顶顶顶
-
这个我做过,呵呵。搞定了。楼主莫慌张,比较简单的。呵呵。
-
家里雇个菲佣,叫开就开叫关就关,不白交钱给移动,还提高了就业率!!呵呵
-
比如发送0X7F
第1位: 0X7F&0x01
第2位: 0X7F&0x02
第3位: 0X7F&0x04
第4位: 0X7F&0x08
第5位: 0X7F&0x10
第6位: 0X7F&0x20
第7位: 0X7F&0x40
第8位: 0X7F&0x80
-
第一个问题是:模拟器上能显示地图?
第二个问题是:.png格式的文件能支持?
-
呵呵,谢谢共享,去看看…
-
有些单片机的开发板环境, 带一些资源利用率的自动计算并最后给出,
楼主可以找下,看是否有第三方的软件支持实现楼主的需求
-
是用,下降沿触发中断
回4楼,在ST的库中那个 EXTI_ClearITPendingBit 函数清除中断挂起位也只是一条指令:
EXTI->PR = EXTI_Line;
与我的也是一样,只不过它是要调用函数,如果将这指令放到中断的处理函数中也会重入中断,请问为何?
不用库的原因只是因为我这个中断的处理过程是用汇编写的.我上面写的只是一个验证的函数.其实STM32的库也不是很高明,请不要太过抬高它的作用.
-
3Q
-
没整过,不会 帮顶
-
引用 5 楼 figo_liu1008 的回复:
两段ddk里的关于IOCreateDeive()中关于device name 参数原文,以及microsoft 关于如何name a device driver, 相信看了你就释然了。
驱动开发还是很有qian途的。加油。
1. “DeviceName ()
Optionally points to a buffer containing a zero-terminated Unicode string that names the device object. The string must be a full path name.
Typically, only physical device objects (PDOs), which are created by PnP bus drivers, are named. PnP function drivers and filter drivers should not specify a DeviceName for a functional device object (FDO) or filter device object (filter DO). Naming an FDO or filter DO bypasses the PnP Manager's security. If a user-mode component needs a symbolic link to the device, the function or filter driver should register a device interface (see IoRegisterDeviceInterface ). If a kernel-mode component needs a legacy device name, the driver must name the FDO, but naming is not recommended. "
2."
IoCreateDevice can only be used to create an unnamed device object, or a named device object for which a security descriptor is set by an INF file. Otherwise, drivers must use IoCreateDeviceSecure to create named device objects.
"
多谢,多看看DDK确实很有帮助。
PNP模式的驱动不鼓励指定设备名,但有的书中也是说是可以指定的,这本书《windows驱动程序开发详解》就是如此,我怀疑是字符串的问题,或者如DDK中所说zero-terminated Unicode string 。
IoCreateDevice can only be used to create an unnamed device object:这句话不太明白,NT模式的驱动使用这中方式,是可以指定设备名的,不明白为什么是only by used.
-
软件防抖比较方便,下面是个例子,希望能给你帮助
if(key2==0)
{
delay(10);//防抖
if(key2==0)
{
if(num==0)
num=60;
num--;
while(!key2);
}
-
帮顶一下.
-
多谢楼主分享
-
换个flash大一些的芯片,或者优化代码减小到4k。
另外,如果芯片支持存储器扩展,那就扩展存储器容量;
如果不支持,应该使用串行的存储器。这种办法应该可行,没亲手这么做过,不推荐。
-
NOR无需初始化就可以跑的,问题应该出在S3C2440A.S上,你的地址配置正确吗?
-
快点找工作