NodeJS: impossible d’écrire sur le périphérique de bloc Windows 8

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é:

  • Ne pas échapper aux barres obliques inverses ( \\.\PhysicalDrive1 ) mais cela entraîne une erreur EINV .
  • En utilisant le nom logique: \\\\.\\E:
  • Démonter le volume avec 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é.