현재 오프라인 상태입니다. 인터넷에 다시 연결하기를 기다리고 있습니다.

정보: FILE_FLAG_WRITE_THROUGH 및 FILE_FLAG_NO_BUFFERING

중요: 본 문서는 전문 번역가가 번역한 것이 아니라 Microsoft 기계 번역 소프트웨어로 번역한 것입니다. Microsoft는 번역가가 번역한 문서 및 기계 번역된 문서를 모두 제공하므로 Microsoft 기술 자료에 있는 모든 문서를 한글로 접할 수 있습니다. 그러나 기계 번역 문서가 항상 완벽한 것은 아닙니다. 따라서 기계 번역 문서에는 마치 외국인이 한국어로 말할 때 실수를 하는 것처럼 어휘, 구문 또는 문법에 오류가 있을 수 있습니다. Microsoft는 내용상의 오역 또는 Microsoft 고객이 이러한 오역을 사용함으로써 발생하는 부 정확성, 오류 또는 손해에 대해 책임을 지지 않습니다. Microsoft는 이러한 문제를 해결하기 위해 기계 번역 소프트웨어를 자주 업데이트하고 있습니다.

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 좋은 경우가 캐시에 없습니다.

경고: 이 문서는 자동으로 번역되었습니다.

속성

문서 ID: 99794 - 마지막 검토: 11/21/2006 15:47:46 - 수정: 4.2

Microsoft Win32 Application Programming Interface

  • kbmt kbapi kbfileio kbinfo kbkernbase KB99794 KbMtko
피드백