정보: FILE_FLAG_WRITE_THROUGH 및 FILE_FLAG_NO_BUFFERING

기술 자료 번역 기술 자료 번역
기술 자료: 99794 - 이 문서가 적용되는 제품 보기.
모두 확대 | 모두 축소

요약

CreateFile() FILE_FLAG_WRITE_THROUGH 플래그를 해당 핸들이 버퍼링되지 않고 파일을 직접 작성해야 했습니다 쓰기가 발생합니다. 그러나 디스크 캐시에 저장된 데이터가 캐시된, 여전히 파일에 직접 작성된. 이 메서드를 사용하면 이를 여전히 있으면) 캐시된 데이터의 읽기 요청을 충족시키기 위해 해당 데이터에 대한 읽기 작업이 있습니다. 그리고 읽기 데이터를 가져오는 대신 파일을 하려면. 데이터를 파일에 쓸 때까지 쓰기 호출을 반환하지 않습니다. 이 원격 쓰기 역시 적용됩니다--네트워크 리디렉터가 FILE_FLAG_WRITE_THROUGH 플래그를 파일에 데이터를 쓸 때까지 쓰기 요청을 만족시키는 서버가 알 수 있도록 서버에 전달합니다.

해당 FILE_FLAG_NO_BUFFERING이 개념을 한 단계 더 이상 걸리는 및 모든 읽기 파일 에서 및 시스템 버퍼 또는 디스크 캐시 보장할 수 있도록 미리 읽기 파일 버퍼링 및 디스크, 캐싱을 모두 제거합니다. FILE_FLAG_NO_BUFFERING 사용하면 디스크 읽기 및 쓰기를 섹터 경계에 수행되어야 합니다 버퍼 주소가 메모리에 디스크 섹터 경계에 따라 정렬되어야 합니다.

읽기 위해 전달하거나 API 쓸 버퍼 I/O 장치 수준에서 직접 사용되기 때문에 이러한 제한이 필요한지, 수준, 사용자 버퍼 주소가 및 섹터 크기 실행 중인 하드웨어의 프로세서 및 미디어 맞춤 제한을 충족시킬 합니다.

추가 정보

Windows 95 CDFS (CD-ROM 파일 시스템) CreateFile()에 대한 FILE_FLAG_NO_BUFFERING 플래그를 지원하지 않습니다. VFAT, 같은 Windows 95 FSD 구현할 수, FILE_FLAG_NO_BUFFERING 파일 시스템 드라이버가 필요한 플래그가 없는 CDFS에 의해 지원되지 않는 동안.

이 코드는 데이터를 버퍼에 섹터 맞춤 및 CreateFile()로 전달하는 방법을 보여 줍니다.
  char buf[2 * SECTOR_SIZE - 1], *p;

  p = (char *) ((DWORD) (buf + SECTOR_SIZE - 1) & ~(SECTOR_SIZE - 1));
  h = CreateFile(argv[1], GENERIC_READ | GENERIC_WRITE,
      FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, CREATE_ALWAYS,
      FILE_ATTRIBUTE_NORMAL | FILE_FLAG_NO_BUFFERING, NULL);
  WriteFile(h, p, SECTOR_SIZE, &dwWritten, NULL);

				
있는 포인터 p 섹터 단위로 맞춰져 있고 내에서 버퍼를 가리키는.

원하는 현재 논리 드라이브에 열려 있는 모든 파일을 플러시할 상황에 있을 경우 이 작업을 수행할 수 있습니다:
   hFile = CreateFile("\\\\.\\c:", ....);
   FlushFileBuffers(hFile);
				
이 방법은 모든 버퍼링된 쓰기 데이터를 C: 파티션이 플러시된 디스크에 쓸 수 있는 열려 있는 모든 파일에 대한 발생합니다. 시스템에 이 플러시; 영향을 받지 이외의 의해 아무 것도 수행할 버퍼링 C 런타임 C 런타임 루틴을 열린 파일에서만 수행할 버퍼링 가능한 파일 영향을 받지 있음을 유의하십시오.

네트워크를 통해 원격 파일을 열 때 항상 서버 캐시하고 클라이언트에서 지정한 없음 버퍼링 플래그는 무시합니다. 이것은 의도적으로 설계된 동작입니다. 제대로 리디렉터 및 서버 전체 FILE_FLAG_NO_BUFFERING 의미 체계의 네트워크를 통해 구현할 수 없습니다. 특히, 섹터 크기가 섹터 단위로 맞춰져 I/O 요구 사항을 충족할 수 없습니다. Win32 기반 응용 프로그램에 대한 FILE_FLAG_NO_BUFFERING 물으면 따라서 리디렉터 및 서버가 이 요청에 대한 FILE_FLAG_WRITE_THROUGH 처리합니다. 클라이언트에서 캐시된 파일을 서버에서 서버로 직접, 디스크 쓰기 이동할 및 응용 프로그램에 대해 묻는 네트워크에서 읽기/쓰기 크기를 정확히 있습니다. 그러나 파일 서버에서가 캐시됩니다.

클라이언트 캐싱 I/O 유형에 따라 다른 영향을 미칠 수 있습니다. 캐시 적중 제거하거나, 미리 읽기 있지만 크기를 줄일 수도 있습니다 전송하고 받습니다. 일반적으로 순차 I/캐시 하위 클라이언트의 좋은 방법입니다. 소규모, 임의 액세스를 위해 I/O 좋은 경우가 캐시에 없습니다.

속성

기술 자료: 99794 - 마지막 검토: 2006년 11월 21일 화요일 - 수정: 4.2
본 문서의 정보는 다음의 제품에 적용됩니다.
  • Microsoft Win32 Application Programming Interface?을(를) 다음과 함께 사용했을 때
    • Microsoft Windows NT Advanced Server 3.1
    • Microsoft Windows NT 4.0
    • Microsoft Windows NT 3.51 서비스 팩 5
    • Microsoft Windows NT 4.0
    • Microsoft Windows 95
    • Microsoft Windows 98 Standard Edition
    • the operating system: Microsoft Windows 2000
    • Microsoft Windows Millennium Edition
    • the operating system: Microsoft Windows XP
키워드:?
kbmt kbapi kbfileio kbinfo kbkernbase KB99794 KbMtko
기계 번역된 문서
중요: 본 문서는 전문 번역가가 번역한 것이 아니라 Microsoft 기계 번역 소프트웨어로 번역한 것입니다. Microsoft는 번역가가 번역한 문서 및 기계 번역된 문서를 모두 제공하므로 Microsoft 기술 자료에 있는 모든 문서를 한글로 접할 수 있습니다. 그러나 기계 번역 문서가 항상 완벽한 것은 아닙니다. 따라서 기계 번역 문서에는 마치 외국인이 한국어로 말할 때 실수를 하는 것처럼 어휘, 구문 또는 문법에 오류가 있을 수 있습니다. Microsoft는 내용상의 오역 또는 Microsoft 고객이 이러한 오역을 사용함으로써 발생하는 부 정확성, 오류 또는 손해에 대해 책임을 지지 않습니다. Microsoft는 이러한 문제를 해결하기 위해 기계 번역 소프트웨어를 자주 업데이트하고 있습니다.

피드백 보내기

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com