J’ai hâte d’écrire directement sur un périphérique Windows brut.
Je peux le faire avec dd pour windows avec succès:
> dd.exe if=myData.dat of=\\.\PhysicalDrive1
Cependant, je suis incapable de le faire en utilisant NodeJS. J’utilise node-blockdevice de la manière suivante:
var device = new BlockDevice({ path: '\\\\.\\PhysicalDrive1', mode: 'w+', size: 512 }); device.write(0, myBuffer, callback);
device.write
renvoie correctement la quantité d’octets écrits, mais device.write
rien sur le périphérique.
Notez que le code exact fonctionne correctement sous Mac OS X (en remplaçant bien \\\\.\\PhysicalDrive1
.
Qu’est-ce que je fais mal?
J’ai aussi essayé:
\\.\PhysicalDrive1
) mais cela entraîne une erreur EINV
. \\\\.\\E:
mountvol X: /D
avant d’essayer de lire / écrire. Je peux correctement confirmer l’identifiant de l’appareil sur lequel je veux écrire avec:
wmic diskdrive list brief
J’ai aussi essayé de régler le mode
sur rs+
. L’opération de lecture semblait fonctionner, mais les données enregistrées contenaient les données suivantes relatives à la défaillance:
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 %
EDIT: Un sujet de problème de github décrivant plus de choses que j’ai essayé: https://github.com/jhermsmeier/node-blockdevice/issues/1 .
EDIT: Toutes les approches mentionnées ont été testées avec des privilèges d’administrateur.
EDIT: J’utilise device.close(callback)
, mais omis dans l’exemple pour plus de simplicité.