Управляющий код FSCTL_SET_COMPRESSION

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

Чтобы выполнить эту операцию, вызовите функцию DeviceIoControl со следующими параметрами.

Синтаксис

BOOL DeviceIoControl(
  (HANDLE) hDevice,            // дескриптор файла или каталога
  FSCTL_SET_COMPRESSION,       // dwIoControlCode
  (LPVOID) lpInBuffer,         // буфер ввода
  (DWORD) nInBufferSize,       // размер буфера ввода
  NULL,                        // lpOutBuffer
  0,                           // nOutBufferSize
  (LPDWORD) lpBytesReturned,   // число возвращаемых данных
  (LPOVERLAPPED) lpOverlapped  // структура OVERLAPPED
);

Параметры

hDevice

[in] Дескриптор файла, выбранного потока или каталога,  которые должны быть сжаты или распакованы. Чтобы извлечь дескриптор устройства, вызовите функцию CreateFile.

Дескриптор должен иметь доступ для  чтения-записи. Для получения дополнительной информации, см. статью Защита файла и права доступа.

dwIoControlCode

[in] Управляющий код для операции.  Для этой операции используйте FSCTL_SET_COMPRESSION.

lpInBuffer

[in]  Указатель на буфер, содержащий USHORT, который  устанавливает новый режим сжатия файла или каталога.

Этот параметр может состоять из одного или нескольких значений перечисленных ниже.

Значение Предназначение
COMPRESSION_FORMAT_NONE Файл или каталог не сжимаются.
COMPRESSION_FORMAT_DEFAULT Файл или каталог сжимаются, используя формат сжатия по умолчанию.
COMPRESSION_FORMAT_LZNT1 Файл или каталог сжимаются, используя формат сжатия LZNT1.
Все другие значения Зарезервированы для будущего использования.
 

nInBufferSize

[in] Размер буфера ввода, в байтах,. Буфер должен быть достаточно большим, чтобы содержать одно значение USHORT.

lpOutBuffer

Не используется этой операцией; устанавливается в ПУСТО (NULL).

nOutBufferSize

Не используется этой операцией; устанавливается в нуль.

lpBytesReturned

[out] Указатель на переменную, которая получает размер данных, сохраненных в буфере вывода данных, в байтах.

Если параметр lpOverlapped - ПУСТО (NULL), lpBytesReturned не может быть ПУСТО (NULL). Даже тогда, когда операция не возвращает никакого вывода данных, а параметр lpOutBuffer - ПУСТО (NULL), функция DeviceIoControl использует lpBytesReturned. После такой операции, значение параметра lpBytesReturned становится бессмысленным.

Если параметр lpOverlapped - не ПУСТО (NULL), то - lpBytesReturned может быть ПУСТО (NULL). Если этот параметр - не ПУСТО (NULL) и операция возвращает данные, lpBytesReturned не имеет смысла до тех пор, пока не завершиться асинхронная операция. Чтобы получить данные о числе возвращаемых данных, вызовите функцию GetOverlappedResult. Если  параметр hDevice связан с портом завершения ввода-вывода данных (I/O), Вы можете извлечь число возвращаемых данных при помощи вызова функции GetQueuedCompletionStatus.

lpOverlapped

[in] Указатель на структуру OVERLAPPED.

Если параметр hDevice открывался без установки флажка FILE_FLAG_OVERLAPPED, параметр lpOverlapped игнорируется.

Если параметр hDevice открывался с флажком FILE_FLAG_OVERLAPPED, операция выполняется как перекрывающая (асинхронная) операция. В этом случае, параметр lpOverlapped должен указать на допустимую структуру OVERLAPPED, которая содержит дескриптор объекта события. Иначе, функция завершается ошибкой непредсказуемыми способами.

Для асинхронных операций, функция DeviceIoControl возвращает значение немедленно, а объект события подает сигнал, когда операция завершается. В противном случае, функция не возвращает значение до тех пор, пока операция не завершится или не произойдет ошибка.

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

Если операция завершается успешно, функция DeviceIoControl возвращает не нулевое значение.

Если операция завершается ошибкой, DeviceIoControl возвращает  нуль. Чтобы получить дополнительную информацию об ошибке, вызовите GetLastError.

Замечания

LZNT1 - единственный осуществляемый алгоритм сжатия. В результате  этого LZNT1 используется как DEFAULT (ЗАДАННЫЙ ПО УМОЛЧАНИЮ) метод сжатия. Будущие версии могут иметь дополнительные методы сжатия которые могут использоваться как ЗНАЧЕНИЕ ПО УМОЛЧАНИЮ.

Если файловая система тома, содержащая заданный файл или каталог не поддерживает сжатие в каждом файле или каталоге, операция завершается ошибкой. (Windows NT 3.51 и более поздние версии поддерживают сжатие файла на томах, отформатированных NTFS.)

Изменение режима сжатия файла или каталога происходит синхронно с вызовом функции DeviceIoControl.

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

Чтобы извлечь атрибут сжатия файла или каталога, используйте функцию GetFileAttributes. Атрибут сжатия указывает, сжимался ли файл или каталог. Режим сжатия указывает, сжимался ли файл или каталог и, если да, то формат сжатых данных.

Каталоги фактически не сжимаются этой операцией. Скорее, операция заставляет создать в каталоге заданный по умолчанию режим сжатия для файлов.

Обратите внимание! на то, что то, что отметки времени не могут быть обновлены правильно для удаленного (сетевого) файла. Чтобы гарантировать непротиворечивые результаты, используйте не буферизованный ввод - вывод.

Сжатие файла поддерживается для несжатых файлов максимальным размером 30 гигабайтов.

Смотри также

Сжатие файла и восстановление сжатых данных, Управляющие коды, используемые в управлении файлами, DeviceIoControl, FSCTL_GET_COMPRESSION, GetFileAttributes

Размещение и совместимость  FSCTL_SET_COMPRESSION

К

Windows XP

Да 

л

Windows 2000 Professional

Да

и

Windows NT

Да версии 3.51 и выше

е

Windows Me

Нет

н

Windows 98

Нет

т

Windows 95

Нет

 
С

Windows Server 2003

Да

е Windows 2000 Server Да
р Windows NT Server Да версии 3.51 и выше
в    
е    
р    

Используемая библиотека

-

Используемая DLL -
 Заголовочный файл  

- объявлено в

Winioctl.h

 - включено в

-

 Unicode

Нет

 Замечания по платформе

Не имеется

 

Назад в оглавление
На главную страницу
На оглавление справки

Hosted by uCoz