Com puc trobar una llista de particions de disc disponibles a Windows? @ action: inmenu

Objectiu

Porto un sistema de fitxers a Windows, i escric una interfície més semblant al Windows per a l' executable de muntatge. Part d' aquest procés està permetent que l' usuari localitzi una partició i escull una lletra de dispositiu. @ info/ plain Finalment, l' elecció de la partició ha de produir alguna cosa que pugui obrir usant @ info/ plain CreaFile() , open() , fopen() o semblant.

Pistes

Windows sembla que gira al voltant del concepte de volums, que no semblen gaire anàleg als discs, i només es pot produir per als sistemes de fitxers muntats.

No obstant això, tots aquests finals en volums o desplaçaments d'aquí, no el /dev/ sda1 M'encarrego de la nansa d'estil específic de la partició.

Aquesta pregunta Després d'una cosa molt similar, vaig considerar una recompensa fins que vaig observar que l'OC era després de noms físics del disc, no particions. Aquesta resposta conté un mètode per forçar els noms de les particions bruta, m'agradaria evitar- les (o veure la documentació que conté límits per a les possibles rutes).

Pregunta

M'agradaria:

  • Corregeix la terminologia i la documentació per a particions desmuntades a Windows. @ info: status
  • Un mètode efectiu i documentat per recuperar totes les particions disponibles. @ info: status
  • L' ajust més proper a l' eliminació de fitxers de la partició tal com està disponible a Linux, on en tot el IO està vinculat a l' àrea apropiada del disc per a la partició oberta. @ info/ plain

Actualitza0

Encara que l'objectiu principal és obrir particions en cru, sembla que la solució pot implicar primer una nansa per a cada disc, i després usar-la en torn per a adquirir cada partició. Com enumera tots els dispositius de disc (fins i tot aquells que no estan muntats) ja són necessaris.

4 respostes 4

Hi ha un bon resum dels conceptes relacionats Aquí. . Em pregunto si falta l'enllaç per tu.

S' està detectant el tipus de disc

No hi ha cap funció específica a programmàticament detecta el tipus de El disc és un fitxer o directori particular localitzat. Hi ha un indirecte. Mètode.

Primera, crida GetVumePathName . Llavors, crida Crea fitxer per obrir el volum Utilitzant el camí. Següent, useu IMOCTL_ RUME_GET_ ROLUME_ DISK_ EXRENTS amb la nansa de volum per obtenir la Número de disc i usa el número del disc a Construeix la ruta al disc, com ara "\?\Phisical divationX." Finalment, ús OCTL_ DISK_GET_DRIVE_ COMPORL_ EXConstellation name (optional) a Captura la llista de particions i comprova@ info: status el tipus de partició per a cada entrada la llista de particions. @ info/ plain

La llista completa de Codis de control de gestió de discs Pot ser que tingui més coses útils. Per ser honest no estic segur de com els mapes de noms de la partició Unix a Windows, potser no és directament.

Per ser contundent, la millor manera d'aconseguir totes les particions de disc muntat/ desmuntades és analitzar el mbr/gpt vostè mateix.

Primer per a netejar algunes coses: els discs contenen particions i particions, combinen per a crear volums. Per tant, podeu tenir un volum que consisteix en dues particions des de dos discs diferents. @ info: whatsthis

OCTL_ DISK_GET_DRIVE_ COMPORL_ EXConstellation name (optional) És la solució més propera que tindreu sense fer-ho manualment. El problema d'això és que depèn de les finestres que poden analitzar incorrectament la IMMR per Déu sap quina raó. La meva teoria de treball actual és que si Windows estava instal· lada via EFI, però està sent arrencada per MBR, veureu aquest tipus de problema. Windows pot sortir amb això perquè la majoria dels gestors de particions copia la informació important de la partició al MBR junt al GPT. @ info/ plain Però això vol dir que no aconseguireu informació important com l'UUID de la partició (que només es desa al GPT).

Totes les altres solucions implicaven obtenir la informació del volum que és completament diferent de la informació de la partició. @ info/ plain

Nota lateral: un identificador de volum Normalment sigui del formulari \\.\Volume {PARLE_ UUID} . Cases on això no es mantindrà: si la unitat està particions amb MBR i no GPT (MBR no té una partició UUID, per tant les finestres fan un pas amunt), si teniu una unitat d' atac, o si teniu un volum consistent amb particions de múltiples discos (una cosa semblant a l' atac). Aquests són només els casos que vénen a la meva ment, no em mantinguis amb ells.

Crec que s'equivoca una mica en una fase anterior. Per exemple, sembla que assumiu que "muntar" funciona en Windows com si funcioni en Unix. És una mica diferent.

Comencem pel final més familiar. Als camins els agrada C:\ Usa les lletres d' unitat. Això són essencialment només un conjunt d'enllaços simbòlics avui en dia (en Windows, són més coneguts com "juncions"). Hi ha un conjunt base per a tots els usuaris, i cada usuari pot afegir el seu propi. Fins i tot si no hi ha cap carta de dispositiu per a un volum, encara hi haurà una nom del volum com a \\?\ Voume{ 4c1b02c1- d990- 11dc- 99ae-8e06e6f6e963}\ . Podeu usar aquest nom de volum en cridar- lo CreaFile() etc. No n'estic segur si fopen() Però li agraden.

La funció ConsultaDosDevive T' obtindrà el nom del dispositiu Windows per a una lletra d' unitat o un nom de volum. Un nom de dispositiu sembla "\ Devive\ HuarddiskVulume1," però no el podeu passar a Crea fitxer

Artículos Relacionados:

- Disc Dur -

Esta web usa cookies, puedes ver la política de cookies, aquí -
Política de cookies +