NTFS 대체 데이터 스트림을 열 때 Windows Error_DISK_FULL (112)의 이유는 무엇입니까?

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

  •  05-07-2019
  •  | 
  •  

문제

내 응용 프로그램은 대체 데이터 스트림에 몇 바이트의 데이터를 씁니다. 이것은 하나의 컴퓨터를 제외한 모든 기계에서 잘 작동합니다 (Windows Server 2003 SP2). 대신 CreateFile이 반환됩니다 ERROR_DISK_FULL 대체 데이터 스트림을 만들려고 할 때 (루트 디렉토리에서) 이 결과의 이유를 찾지 못합니다. 왜냐하면 ...

  • 그 드라이브에는 충분한 공간이 있습니다.

  • 드라이브는 NTFS 형식입니다 (GetVolumeInformation으로 인해).

  • 드라이브는 Altenate 데이터 스트림을 지원합니다 (GetVolumeInformation으로 인해).

편집 : 이유에 대한 자세한 정보를 제공 할 수 있습니다. ~ 아니다 IS : 테스트 시스템에 오류가 표시되지 않은 많은 스트림을 추가했으며 오류가 발생할 수 있는지 궁금했습니다. 그렇지 않았습니다. 대신 파일 이름이 긴 약 2000 개의 스트림 후에 또 다른 오류가 발생하고 지속되었습니다 : 1450 (Error_No_system_Resources).

편집 : 다음은 중고 파일 이름 중 하나에 대한 예입니다.

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

편집 : 고객은이 서버에서 Avira의 일부 회사 안티 바이러스 소프트웨어를 사용합니다. 어쩌면 이것이 이유 일 수 있습니다 (대체 데이터 스트림은 맬웨어로 남용 될 수 있음).

도움이 되었습니까?

해결책

MS에서 지원 티켓을 열면 문서화되지 않은 Windows 기능으로 만 설정 (및 재설정) 할 수있는 Readonly 플래그 세트가 있음을 알고 있습니다. 누가이 깃발을 설정 한 사람과 그 이유를 아는 사람은 아무도 없지만 (고객에게서 기계를 얻은 후) 드라이브의 이미지를 보냈습니다. 그래서 그들은 그것을 알아 냈습니다. 응용 프로그램에는 해결 방법 만 있습니다 (이 오류를 감지하면 다른 위치를 사용합니다). 한편 우리는 일부 고객 이이 문제가 있다는 것을 알고 있습니다.

다른 팁

압축/여분의 파일 또는 대체 데이터 스트림이 있습니까?

백업 애플리케이션은 종종 압축 파일을 백업하려는 오류 _disk_full 오류를받습니다. 이는 여전히 드라이브에 몇 기가 바이트의 여유 공간이있을 때 약간의 혼란을 초래합니다. 압축 파일을 복사 할 때 다른 문제가 발생할 수도 있습니다. 이 블로그의 목표는 독자에게 NTFS 파일을 압축 할 때 실제로 발생하는 일에 대한보다 철저한 이해를 제공하는 것입니다.

에서 NTFS 압축 이해

블라인드 샷이지만 권리가 제대로 설정되어 있습니까?

또 다른 가능성 ...

OS에서 현재 Opend 파일 수를 확인 했습니까? OS 지원 Max. 해당 보고서 이후에 예약 된 파일 처리 수 에러 오류 _disk_full 또는 error_no_system_resources.

그리고 두 번째 가능성 ... 루트 디렉토리는 파일 수로 제한됩니다. 이전 버전의 OS에서 512 파일을 기억합니다. 그러나 NTFS는 루트에서 무제한의 파일을 지원합니다!

당신은 어떤 것이 무엇인지보고 싶을 것입니다 Sysinternal의 프로세스 모니터 이 파일을 만들려고 할 때 유틸리티 캡처 - I/O 스택과 관련된 다양한 API의 반환 코드가 표시되며 그 중 하나는 112가 귀하에게 반환되는 이유에 대한 단서를 줄 수 있습니다. Procmon의 세부 수준이 충분합니다. 그렇지 않다면, 나는 창문 용 더 자세한 I/O 추적 시설이 있다고 생각합니다 (그러나 나는 내 머리 꼭대기에서 그들을 모릅니다).

당신이주는 파일 이름은입니다

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

그것은 시작합니다

C:\\:

게시물의 오타입니까, 아니면 슬래시 후 실제로 결장이 있습니까? 나는 그것이 불법 파일 이름이라고 생각합니다.

다른 파일 시스템 (NTFS)에서 FAT / FAT32로 2GB보다 큰 파일을 복사하려고하면 2GB 제한이있는 경우이 오류가 표시 될 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top