我期待直接写入原始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)
,但为了简单起见,在示例中省略了。