摘要:调用Windows的Search(搜索)窗口
阅读全文
随笔分类 - 文件操作
摘要:但是同样的方法却能正确枚举出“桌面”下的对象。 注意:不能正确枚举和不能枚举是不同的,不能正确枚举意思是:能枚举出来东西,但是获得的图标和DisplayName都不对。 程序如下,请高手帮忙瞧一瞧。 // m_pDirTree 为类成员变量 m_pDirTree=(CTreeCtrl *)GetDlgItem(IDC_TREE_PIDL); ::SetWindowLong(m_pDirTre...
阅读全文
摘要:这通常是最久的历史纪录,但是你可以修改部分代码来删除需要的项目。 // Error checking minimized for clarity. void DeleteUrlFromHistoryShell() { HRESULT hr; // Call this if nee...
阅读全文
摘要:1、FindNextFile(), FindClose()2、SHGetFileInfo()3、PathFileExists()BOOL PathFileExists( LPCTSTR lpszPath );
阅读全文
摘要:进程间共享数据的四种方式,1、CreateFileMapping;2、Dll;3、WM_COPYDATA;4、直接调用ReadProcessMemory和WriteProcessMemory函数实现进程间通讯;
最后说了一下进程间发送消息的方法
阅读全文
摘要:我们知道,在NT/2K/XP中,操作系统利用虚拟内存管理技术来维护地址空间映像,每个进程分配一个4GB的虚拟地址空间。运行在用户态的应用程序,不能直接访问物理内存地址;而运行在核心态的驱动程序,能将虚拟地址空间映射为物理地址空间,从而访问物理内存地址。 如果要在应用程序中以物理地址方式访问内存,自然而然的办法,是编写一个专用的驱动程序(如大家熟悉的WinIO),里面设置一定的IOCTL码,应用程序...
阅读全文
摘要:Q 前几次我们讨论的都是设备名比较清楚的情况,有了设备名(路径),就可以直接调用CreateFile打开设备,进行它所支持的I/O操作了。如果事先并不能确切知道设备名,如何去访问设备呢? A 访问设备必须用设备句柄,而得到设备句柄必须知道设备路径,这个套路以你我之力是改变不了的。每个设备都有它所属类型的GUID,我们顺着这个GUID就能获得设备路径。 GUID是同类或同种设备的全球唯一识别码,...
阅读全文
摘要:Q 用IOCTL_DISK_GET_DRIVE_GEOMETRY或IOCTL_STORAGE_GET_MEDIA_TYPES_EX只能得到很少的磁盘参数,我想获得包括硬盘序列号在内的更加详细的信息,有什么办法呀? A 确实,用你所说的I/O控制码,只能得到最基本的磁盘参数。获取磁盘出厂信息的I/O控制码,微软在VC/MFC环境中没有开放,在DDK中可以发现一些线索。早先,Lynn McGuire...
阅读全文
摘要:Q DOS命令DISKCOPY给我很深的印象,现在也有许多“克隆”软件,可以对磁盘进行全盘复制。我想,要制作磁盘镜像文件,DeviceIoControl应该很有用武之地吧? A 是的。这里举一个制作软盘镜像文件,功能类似于“DISKCOPY”的例子。 本例实现其功能的核心代码如下: // 打开磁盘 HANDLE OpenDisk(LPCTSTR filename) { HANDLE h...
阅读全文
摘要:Q 在MSDN的那个demo中,将设备名换成“A:”取A盘参数,先用资源管理器读一下盘,再运行这个程序可以成功,但换一张盘后就失败;换成“CDROM0”取CDROM参数,无论如何都不行。这个问题如何解决呢? A 取软盘参数是从软盘上读取格式化后的信息,也就是必须执行读操作,这一点与硬盘不同。将CreateFile中的访问方式改为GENERIC_READ就行了。 IOCTL_DISK_GET_D...
阅读全文
摘要:Q 在NT/2000/XP中,我想用VC编写应用程序访问硬件设备,如获取磁盘参数、读写绝对扇区数据、测试光驱实际速度等,该从哪里入手呢? A 在NT/2000/XP中,应用程序可以通过API函数DeviceIoControl来实现对设备的访问—获取信息,发送命令,交换数据等。利用该接口函数向指定的设备驱动发送正确的控制码及数据,然后分析它的响应,就可以达到我们的目的。 DeviceIoCont...
阅读全文
摘要:给应用程序加装“看门狗” 相信大多数的程序员或用户,在Windows中见到类似于下面的亲切而又温馨的提示信息,都不会感到陌生: “XXX执行了非法操作,将被关闭。要终止程序,请单击;要调试程序,请单击。”或者,“是否向Microsoft发送错误报告?,。” 如果这个程序运行在无人值守、需要保持连续工作状态的场合,而其中的bug又一时难以排除,就需要采取应急措施,消除或减少程序出错造成的影响。本...
阅读全文
摘要:在Windows NT/2K/XP中,直接用CreateFile打开名称类似于"\\.\A:"的”文件”,就可以与设备驱动打交道,通过ReadFile/WriteFile以绝对地址方式访问磁盘了。但Windows 9X不支持这样的简单方法。本文介绍一种在Windows 9X中实现磁盘直接访问的方法:利用系统的vwin32.vxd,通过DeviceIoControl调用DOS INT21 7305H...
阅读全文
摘要:摘要:本文主要介绍了在Windows 2000下对磁盘扇区数据的直接读写访问方法,并在此基础上实现了对磁盘扇区内容的查看、基于扇区的数据备份与恢复、对磁盘信息的彻底擦除等一些有着实际意义的应用。 关键字:磁盘访问;扇区;Windows 2000;VC++ 引言 由于Windows 操作系统在很大程度上采取了访问安全保护机制(例如,在Windows操作系统下不能直接访问物理内存、不能使用...
阅读全文
摘要:在程序开发过程中,经常遇到需要保护用户信息和私有数据不被他人窃取的情况,也就是要对数据进行加密。在Win2000以前,要对数据进行加密和解密操作,一般要使用CryptAPI函数,相当烦琐。幸运的是,从Win2000开始,操作系统从内核的级别上提供了对文件进行加密和解密的函数,而且使用起来相当简单。 加密的函数是 BOOL EncryptFile( LPC...
阅读全文
摘要:Win2000的共享内存是同机进程间通信的一个省事的办法。虽然只能在同一台机器上起作用,但使用起来很方便。现在下面开始介绍一下函数: 1. CreateFileMappingHANDLE CreateFileMapping( HANDLE hFile, //...
阅读全文
摘要:这个例子是用来进程间共享数据用的
//创建一内存映射文件,设定共享内存区域
m_hSharedMemoryFile = ::CreateFileMapping(
(HANDLE)0xFFFFFFFF, // 文件句柄
NULL, // 安全属性(WIN95忽略)
PAGE_READWRITE, // 文件的保护属性
0, // 使用页面文件
1 m_strShareMemName.GetBuffer(0));// 共享内存名称
阅读全文
摘要:CreateFileMapping(...,name)MapViewOfFilehandle=OpenFileMapping(...,name)WriteFile(handle...)注意文件存取的类型要一致,下面代码是可以的:HANDLE hf=CreateFile("out.txt",GENERIC_WRITE|GENERIC_READ,FILE_SHARE_WRITE,NULL,OPEN_A...
阅读全文
浙公网安备 33010602011771号