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


Управляющий код FSCTL_FIND_FILES_BY_SID ищет каталог файла, владелец создателя которого соответствует заданному идентификатору безопасности (SID).

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

Синтаксис

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

Параметры

hDevice

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

dwIoControlCode

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

lpInBuffer

[in] Указатель на буфер ввода данных, структура FIND_BY_SID_DATA.

nInBufferSize

[in] Размер буфера ввода данных, в байтах.

lpOutBuffer

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

nOutBufferSize

[in] Размер буфера вывода данных, в байтах.

lpBytesReturned

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

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

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

Если параметр 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.

Замечания

Этот управляющий код требует использования дисковых квот (disk quotas) в томе.

Смотри также

Управляющие коды, используемые в управлении файлами, DeviceIoControl, FIND_BY_SID_DATA, FIND_BY_SID_OUTPUT

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

К

Windows XP

Да 

л

Windows 2000 Professional

Да

и

Windows NT

Нет

е

Windows Me

Нет

н

Windows 98

Нет

т

Windows 95

Нет

 
С

Windows Server 2003

Да

е Windows 2000 Server Да
р Windows NT Server Нет
в    
е    
р    

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

-

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

- объявлено в

Winioctl.h

 - включено в

-

 Unicode

Нет

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

Не имеется

 

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

Hosted by uCoz