Функция CcZeroData (ntifs.h)

Подпрограмма CcZeroData обнуляет указанный диапазон байтов в кэшированном или некэшированном файле.

Примечание

Эта подпрограмма должна вызываться только для нулевых частей файла, превышающих допустимую длину данных файла. CcZeroData не изменяет ранее записанные данные файла. Чтобы обнулить ранее записанные данные, которые являются частью файла до допустимой длины данных файла, вызовите CcCopyWrite или один из других кэшированных интерфейсов записи.

Синтаксис

BOOLEAN CcZeroData(
  [in] PFILE_OBJECT   FileObject,
  [in] PLARGE_INTEGER StartOffset,
  [in] PLARGE_INTEGER EndOffset,
  [in] BOOLEAN        Wait
);

Параметры

[in] FileObject

Указатель на FILE_OBJECT для файла, в котором обнуляется диапазон байтов.

[in] StartOffset

Указатель на переменную, указывающую смещение байтов в файле до первого байта, который требуется обнулить.

[in] EndOffset

Указатель на переменную, указывающую смещение байтов в файле до последнего байта, который требуется обнулить.

[in] Wait

Установите значение TRUE , если вызывающий объект должен быть переведен в состояние ожидания до тех пор, пока весь диапазон байтов не будет обнуляться. В противном случае этому параметру присваивается значение FALSE.

Возвращаемое значение

CcZeroData возвращает значение TRUE , если данные успешно обнуляются; в противном случае возвращает значение FALSE.

Комментарии

Обнуляемый файл можно кэшировать или без кэширования. Однако если файл не кэширован, значения StartOffset и EndOffset должны быть кратными размеру сектора тома.

Если происходит сбой выделения пула и параметр Wait был указан как TRUE, CcZeroData вызывает исключение STATUS_INSUFFICIENT_RESOURCES. Если происходит сбой выделения пула и параметр Wait был указан как FALSE, CcZeroData возвращает значение FALSE, но не создает исключение.

Если в предоставленном объекте FileObject кэширование не включено, но кэширование существует в потоке (то есть для другого файлового объекта для того же файла включено кэширование), обнуление будет рассматриваться так, как если бы включено кэширование путем записи.

Если параметр Wait имеет значение TRUE, CcZeroData гарантированно завершит нулевой запрос данных и возвратит значение TRUE. Если необходимые страницы кэшированного файла уже находятся в памяти, данные будут немедленно обнуляться и блокировка не возникнет. Если какие-либо необходимые страницы не являются резидентными, вызывающий объект будет помещен в состояние ожидания, пока все необходимые страницы не будут резидентными, и данные можно будет обнулить.

Если параметр Wait имеет значение FALSE и если необходимые страницы кэшированного файла еще не находятся в памяти, CcZeroData откажется заблокировать и вернет значение FALSE.

Если происходит сбой выделения пула, CcZeroData вызывает исключение STATUS_INSUFFICIENT_RESOURCES. Если CcZeroData обнаруживает любые другие ошибки, включая ошибки ввода-вывода, эти ошибки будут вызваны вызывающей стороны.

Для Операционных систем Windows Vista и более поздних версий CcZeroData действует следующим образом:

  • Если поток кэшируется и write_through, startOffset не обязательно должен быть выровнен по секторам.
  • Если endOffset не выровнен, он округляется до следующего размера сектора.

Требования

Требование Значение
Минимальная версия клиента Windows 2000. Сведения об изменениях в операционных системах Vista и более поздних версий см. в разделе Примечания.
Целевая платформа Универсальное
Верхняя часть ntifs.h (включая Fltkernel.h, Ntifs.h)
Библиотека NtosKrnl.lib
DLL NtosKrnl.exe
IRQL <=APC_LEVEL

См. также раздел

CcInitializeCacheMap

CcIsFileCached

FILE_OBJECT