Quale può essere la ragione dell'errore di Windows ERROR_DISK_FULL (112) quando si apre un flusso di dati alternativo NTFS?

StackOverflow https://stackoverflow.com/questions/1606245

  •  05-07-2019
  •  | 
  •  

Domanda

La mia applicazione scrive alcuni byte di dati in un flusso di dati alternativo. Funziona bene su tutte le macchine tranne una (Windows Server 2003 SP2). Invece, CreateFile restituisce ERROR_DISK_FULL quando provo a creare un flusso di dati alternativo (nella directory principale). Non trovo il motivo di questo risultato, perché ...

  • C'è molto spazio su quell'unità.

  • L'unità è formattata NTFS (a causa di GetVolumeInformation).

  • L'unità supporta i dati altenati flussi (grazie a GetVolumeInformation).

Modifica: posso fornire ulteriori informazioni su quale sia il motivo non : Ho aggiunto molti stream su un sistema di test che non mostrava l'errore e mi chiedevo se l'errore potesse verificarsi. No Invece dopo circa 2000 stream con nomi di file lunghi si è verificato e persistito un altro errore: 1450 (ERROR_NO_SYSTEM_RESOURCES).

EDIT: ecco un esempio per uno dei nomi di file utilizzati:

char szStreamFileName[] = "C:\\:abcdefghijklmnopqrstuvwxyz1234567890abcdefghijklmnoqrstuvwxyz012345";

MODIFICA: Il nostro cliente utilizza alcuni software antivirus aziendali di Avira su questo server. Forse questo è il motivo (flussi di dati alternativi possono essere abusati da malware).

È stato utile?

Soluzione

Dopo aver aperto un ticket di supporto presso MS, so che c'era un set di flag di sola lettura che è possibile impostare (e ripristinare) solo con funzioni di Windows non documentate. Nessuno sa chi ha impostato questa bandiera e perché, ma ho inviato loro un'immagine dell'unità (dopo che ho ricevuto la macchina dal nostro cliente) e quindi l'hanno capito. Abbiamo solo una soluzione alternativa nella nostra applicazione (utilizziamo un'altra posizione se rileviamo questo errore). Nel frattempo sappiamo che alcuni dei nostri clienti hanno questo problema.

Altri suggerimenti

Esistono file compressi / di riserva o flussi di dati alternativi?

  

Spesso le applicazioni di backup ricevono errori ERROR_DISK_FULL nel tentativo di eseguire il backup dei file compressi e questo provoca un po 'di confusione quando ci sono ancora diversi gigabyte di spazio libero sull'unità. Altri problemi possono verificarsi anche durante la copia di file compressi. L'obiettivo di questo blog è fornire al lettore una comprensione più approfondita di ciò che accade realmente quando si comprimono i file NTFS.

Da Comprensione della compressione NTFS

Solo un colpo alla cieca, ma i diritti sono impostati correttamente?

Solo un'altra possibilità ...

Hai controllato il numero di file attualmente aperti nel tuo sistema operativo? Il supporto del sistema operativo max. numero di handle di file riservati dopo tale report ERROR_DISK_FULL o ERROR_NO_SYSTEM_RESOURCES.

E seconda possibilità ... La directory principale è limitata dal numero di file. Come ricordo 512 file nelle versioni precedenti del sistema operativo. Ma NTFS supporta un numero illimitato di file in root!

Potresti voler vedere qualcosa di simile a Sysinternal's Process Monitor l'utilità acquisisce durante il tentativo di creare questo file: mostra i codici di ritorno di varie API coinvolte nello stack I / O e uno di questi potrebbe darti un'idea del perché 112 ti viene restituito. Spero che il livello di dettaglio in ProcMon sia sufficiente - in caso contrario, immagino che ci siano altre funzionalità di traccia I / O più dettagliate per Windows (ma non le conosco dalla cima della mia testa)

Il nome file che dai è

char szStreamFileName[] = "C:\\:abcdefghijklm...

inizia con

C:\\:

È un refuso sul post o c'è davvero un punto dopo la barra? Penso che sia un nome di file illegale.

Se si tenta di copiare un file maggiore di 2 GB da un altro filesystem (NTFS) in FAT / FAT32 che ha un limite di 2 GB, è possibile che venga visualizzato questo errore.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top