程序崩溃(crash)的时候, 为了以后能够调试分析问题, 可以使用WinDBG要把当时程序内存空间数据都保存下来,生成的文件称为dump 文件。 步骤:
Q 在NT/2000/XP中,如何直接访问物理端口?
Q 前几次我们讨论的都是设备名比较清楚的情况,有了设备名(路径),就可以直接调用CreateFile打开设备,进行它所支持的I/O操作了。如果事先并不能确切知道设备名,如何去访问设备呢?
Q 用IOCTL_DISK_GET_DRIVE_GEOMETRYIOCTL_STORAGE_GET_MEDIA_TYPES_EX只能得到很少的磁盘参数,我想获得包括硬盘序列号在内的更加详细的信息,有什么办法呀?
Q DOS命令 DISKCOPY 给我很深的印象,现在也有许多“克隆”软件,可以对磁盘进行全盘复制。我想,要制作磁盘镜像文件,DeviceIoControl 应该很有用武之地吧?
Q 在 MSDN的那个 demo 中,将设备名换成“A:”取 A 盘参数,先用资源管理器读一下盘,再运行这个程序可以成功,但换一张盘后就失败;换成“CDROM0”取 CDROM参数,无论如何都不行。这个问题如何解决呢?
不知是哪位大侠所写,但写得异常精彩。
通常设备对象都把自己的名字放到\Device目录中。在Windows 2000中,设备的名称有两个用途。第一个用途,设备命名后,其它内核模式部件可以通过调用IoGetDeviceObjectPointer函数找到该设备,找到设备对象后,就可以向该设备的驱动程序发送IRP。
另一个用途,允许应用程序打开命名设备的句柄,这样它们就可以向驱动程序发送IRP。应用程序可以使用标准的CreateFile API打开命名设备句柄,然后用ReadFile、WriteFile,和DeviceIoControl向驱动程序发出请求。应用程序打开设备句柄时使用\\.\路径前缀而不是标准的UNC(统一命名约定)名称,如C:\MYFILE.CPP或\\FRED\C-Drive\HISFILE.CPP。在内部,I/O管理器在执行名称搜索前自动把\\.\转换成\??\。为了把\??目录中的名字与名字在其它目录(例如,在\Device目录)中的对象相连接,对象管理器实现了一种称为符号连接(symbolic link)的对象。
Install the last SDK with BT support ( only with XP SP1)
More information at: http://www.microsoft.com/msdownload/platformsdk/sdkupdate/
(The Core module is enough, and SDK comes with information about how to programming BT)
Install the patch for BT support ( only with XP SP1)
More information at: http://www.microsoft.com/whdc/hwtest/search/details.aspx?ID=672#BluetoothGuidelines
Programm BT applications, using sockets or access functions.
Example of programming with sockets at: http://www.lenholgate.com/archives/000102.html