NodeJS:无法写入Windows 8块设备

时间:2014-12-08 19:53:44

标签: windows node.js block-device

我期待直接写入原始Windows模块设备。

我可以使用dd for windows成功完成此操作:

> dd.exe if=myData.dat of=\\.\PhysicalDrive1

但是我无法使用NodeJS这样做。我以下列方式使用node-blockdevice

var device = new BlockDevice({
  path: '\\\\.\\PhysicalDrive1',
  mode: 'w+',
  size: 512
});

device.write(0, myBuffer, callback);

device.write正确返回写入的字节数,但它实际上并没有向设备写入任何内容。

请注意,确切的代码在Mac OS X中成功运行(当然用\\\\.\\PhysicalDrive1替换/dev/diskN):它会写入我的数据,我可以在Windows 8中查看它而没有任何问题。

我做错了什么?

我也尝试过:

  • 不转义反斜杠(\\.\PhysicalDrive1),但会导致EINV错误。
  • 使用逻辑名称:\\\\.\\E:
  • 在尝试读/写之前用mountvol X: /D卸载卷。

我可以正确确认我想要写入的设备的ID:

wmic diskdrive list brief

我还尝试将mode设置为rs+。读取操作似乎有效,但保存的数据包含以下与故障相关的数据:

�X�MSDOS5.0�
�?����:�)?�xNO NAME    FAT32   3ɎѼ�{��ٽ|�V@�N�V@�A��U�r��U�u
��t�F�-�V@�s�����f��@f������Af��f��f�F�~u9�~*w3f�Ff��
                                                        ����,���}��|���t<�t   ������}��}��ߘ��f`�~� fjfPSfh�B�V@���fXfXfXfX�3f;F�r��*f3�f�Nf����f��f���v�֊V@����
 ̸�fa�t���f@Iu��BOOTMGR
Disk error�
Press any key to restart
��U�%

编辑: github问题主题描述了我尝试过的更多内容:https://github.com/jhermsmeier/node-blockdevice/issues/1

编辑:所有提到的方法均以管理员权限进行测试。

编辑:我使用的是device.close(callback),但为了简单起见,在示例中省略了。

0 个答案:

没有答案
相关问题