相关疑难解决方法(0)

18
推荐指数
1
解决办法
3万
查看次数

在Windows7 - 32位系统上获取有关磁盘驱动器结果的信息

当我在Windows XP - 32上运行以下代码时,我得到以下结果.

我只插了一个usb笔式驱动器

On Windows XP - 32 Bit
-----------------------

Drive C:
    ProductId: ST3160215AS
    ProductRevision: 3.AAD
    DeviceType: 7, DeviceNumber: 0, PartitionNumber: 1
    DevicePath: \\?\ide#diskst3160215as_____________________________3.aad___#5&2
7db0ed4&0&0.0.0#{53f56307-b6bf-11d0-94f2-00a0c91efb8b}
    Class: DiskDrive
    Hardware ID: IDE\DiskST3160215AS_____________________________3.AAD___
    Friendly Name: ST3160215AS
    Physical Device Object Name: \Device\Ide\IdeDeviceP2T0L0-5
    Device Description: Disk drive
    Parent Device Instance ID: PCIIDE\IDECHANNEL\4&1C1E8A11&0&0
    Parent of Parent Device Instance ID: PCI\VEN_8086&DEV_27C0&SUBSYS_72671462&R
EV_01\3&11583659&0&FA
    DeviceInstanceId: IDE\DISKST3160215AS_____________________________3.AAD___\5
&27DB0ED4&0&0.0.0
Drive D:
    ProductId: ST3160215AS
    ProductRevision: 3.AAD
    DeviceType: 7, DeviceNumber: 0, PartitionNumber: 2
    DevicePath: \\?\ide#diskst3160215as_____________________________3.aad___#5&2
7db0ed4&0&0.0.0#{53f56307-b6bf-11d0-94f2-00a0c91efb8b}
    Class: DiskDrive
    Hardware ID: IDE\DiskST3160215AS_____________________________3.AAD___ …
Run Code Online (Sandbox Code Playgroud)

windows winapi msdn

3
推荐指数
1
解决办法
8812
查看次数

如何显式锁定已挂载的文件系统?

如何在Windows 7中写入物理驱动器?

我正在尝试写入\\.\PhysicalDrive0Windows 7中的物理磁盘(例如).

这个问题已经被要求死亡,但从未得到过回答.它曾经在Windows XP中运行,但微软故意在Windows Vista中破解.微软提供了有关如何操作的提示,但没有人能够弄明白.

它曾经工作过

在过去,允许写入物理磁盘(只要您是管理员).执行此操作的方法甚至记录在知识库文章中:

信息:Win32下的直接驱动器访问

要在基于Win32的应用程序中打开直接磁盘访问(原始I/O)的物理硬盘驱动器,请使用表单的设备名称

\\.\PhysicalDriveN
Run Code Online (Sandbox Code Playgroud)

其中N为0,1,2等,表示系统中的每个物理驱动器.

您可以使用具有这些设备名称的CreateFile()应用程序编程接口(API)打开物理或逻辑驱动器,前提是您具有对驱动器的适当访问权限(即,您必须是管理员).必须同时使用CreateFile()FILE_SHARE_READ和FILE_SHARE_WRITE标志才能访问驱动器.

在添加安全限制的情况下,Windows Vista中的所有更改都会发生.

你如何写入物理磁盘?

许多人和许多答案,在许多stackoverflow问题上混淆:

  • 写入物理磁盘(例如\\.\PhysicalDrive0),和
  • 写入逻辑卷(例如\\.\C$)

Microsoft注意到对这两种操作限制:

阻止对卷和磁盘的直接写入操作

如果出现以下情况,DASD(直接访问存储设备)卷句柄上的写操作将成功:

  • 文件系统未安装,或者是否
  • 写入的扇区是引导扇区.
  • 写入的扇区驻留在文件系统空间之外.
  • 通过请求独占写访问来隐式锁定文件系统.
  • 通过发送锁定/卸载请求显式锁定了文件系统.
  • 写请求已由内核模式驱动程序标记,指示应绕过此检查.该标志名为SL_FORCE_DIRECT_WRITE,它位于IrpSp-> flags字段中.文件系统和存储驱动程序都会检查此标志.

在我的情况下,我要求写一个物理,而不是逻辑.Microsoft注意到写入物理磁盘句柄的新限制:

在以下情况下,磁盘句柄上的写操作将成功:

  • 写入的扇区不属于文件系统.
  • 写入的扇区属于明确锁定的已装入文件系统.
  • 写入的扇区属于未安装的文件系统或卷没有文件系统.
  • 我写的部门确实属于文件系统 - >失败
  • 我写的扇区确实属于已安装,未锁定的文件系统 - >失败
  • 我写的扇区确实属于安装的文件系统,并且位于具有文件系统的逻辑卷内.

关于如何使其工作的提示围绕着:

  • 卸载文件系统
  • 锁定文件系统

但问题是如何卸载文件系统?你如何锁定文件系统?

你在做什么?

我能够读取磁盘的所有物理扇区; 那没问题.问题是当我想写入磁盘的物理扇区时.

我当前的代码是伪代码:

void ZeroSector(Int64 …
Run Code Online (Sandbox Code Playgroud)

windows winapi disk windows-7

2
推荐指数
1
解决办法
1296
查看次数

标签 统计

winapi ×3

windows ×3

msdn ×2

c++ ×1

disk ×1

windows-7 ×1