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


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

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

Синтаксис

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

Параметры

hDevice

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

dwIoControlCode

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

lpInBuffer

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

nInBufferSize

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

lpOutBuffer

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

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

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

nOutBufferSize

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

lpBytesReturned

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

Если буфер вывода данных является слишком маленьким,  то вызов завершается ошибкой, GetLastError возвращает код ошибки ERROR_INSUFFICIENT_BUFFER, а lpBytesReturned равняется нулю.

Если параметр 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 - единственный осуществленный алгоритм сжатия. В будущих версиях могут появиться дополнительные методы сжатия.

Флажок COMPRESSION_FORMAT_DEFAULT - не режим сжатия, так что он не включен в таблицу  параметра lpOutBuffer. Это значение используется только  с управляющим кодом FSCTL_SET_COMPRESSION.

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

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

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

Смотри также

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

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

К

Windows XP

Да 

л

Windows 2000 Professional

Да

и

Windows NT Workstation

Да версии 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