Поделиться через


функция обратного вызова PRJ_GET_DIRECTORY_ENUMERATION_CB (projectedfslib.h)

Запрашивает сведения о перечислении каталога у поставщика.

Синтаксис

PRJ_GET_DIRECTORY_ENUMERATION_CB PrjGetDirectoryEnumerationCb;

HRESULT PrjGetDirectoryEnumerationCb(
  [in]           const PRJ_CALLBACK_DATA *callbackData,
  [in]           const GUID *enumerationId,
  [in, optional] PCWSTR searchExpression,
  [in]           PRJ_DIR_ENTRY_BUFFER_HANDLE dirEntryBufferHandle
)
{...}

Параметры

[in] callbackData

Сведения об операции. Для реализации этого обратного вызова необходимы следующие члены callbackData :

FilePathName Определяет каталог для перечисления.
VersionInfo Предоставляет сведения о версии для перечисляемого каталога.
Флаги Флаги для управления тем, что возвращается в перечислении. Допустимые значения:
PRJ_CB_DATA_FLAG_ENUM_RETURN_SINGLE_ENTRY Этот бит устанавливается, если пользователь запрашивает только одну запись из перечисления. Поставщик может рассматривать это как подсказку и может выбрать возврат нескольких записей, чтобы сделать перечисление, возвращающее один элемент за раз, более эффективным. В этом случае ProjFS вернет пользователю одну запись, вызывая поставщик только в том случае, если ему требуется больше записей.
PRJ_CB_DATA_FLAG_ENUM_RESTART_SCAN Этот бит задается, если перечисление начинается с первой записи в каталоге. При первом вызове этого обратного вызова для сеанса перечисления поставщик должен рассматривать этот флаг как заданный, независимо от его значения. Все перечисления должны начинаться с первой записи. При последующих вызовах этого обратного вызова поставщик должен учитывать это значение.
 

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

[in] enumerationId

Идентификатор для этого сеанса перечисления.

[in, optional] searchExpression

Указатель на строку Юникода, завершающуюся значением NULL, задающую выражение поиска. Выражение поиска может содержать подстановочные знаки. Поставщик должен использовать функцию PrjDoesNameContainWildCards , чтобы определить, присутствуют ли подстановочные знаки в searchExpression, и использовать функцию PrjFileNameMatch , чтобы определить, соответствует ли запись в резервном хранилище выражению поиска, содержащему подстановочные знаки.

Этот параметр является необязательным и может иметь значение NULL.

  • Если этот параметр не равен NULL, поставщик должен возвращать только те записи каталога, имена которых соответствуют выражению поиска.
  • Если этот параметр имеет значение NULL, поставщик должен вернуть все записи каталога.

Поставщик должен записать значение этого параметра при первом вызове этого обратного вызова для сеанса перечисления и использовать его в последующих вызовах, игнорируя этот параметр в этих вызовах, если PRJ_CB_DATA_FLAG_ENUM_RESTART_SCAN не указан в элементе FlagscallbackData. В этом случае поставщик должен повторно записать значение searchExpression.

[in] dirEntryBufferHandle

Непрозрачный дескриптор структуры, которая получает результаты перечисления от поставщика. Поставщик использует подпрограмму PrjFillDirEntryBuffer для заполнения структуры.

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

Код возврата Описание
S_OK
Поставщик успешно добавил по крайней мере одну запись в dirEntryBufferHandle или не добавил ни одной записи в поиске соответствия хранилища поставщика.
HRESULT_FROM_WIN32(ERROR_INSUFFICIENT_BUFFER)
Поставщик получил эту ошибку от PrjFillDirEntryBuffer для первого файла или каталога, который он пытался добавить в dirEntryBufferHandle.
HRESULT_FROM_WIN32(ERROR_IO_PENDING)
Поставщик хочет завершить операцию позже.
 

Соответствующий код ошибки HRESULT, если поставщик не выполняет операцию.

Комментарии

ProjFS вызывает этот обратный вызов один или несколько раз после вызова PRJ_START_DIRECTORY_ENUMERATION_CB. Дополнительные сведения см. в разделе Примечания PRJ_START_DIRECTORY_ENUMERATION_CB .

Требования

Требование Значение
Минимальная версия клиента Windows 10, версия 1809 [только классические приложения]
Минимальная версия сервера Windows Server [только классические приложения]
Целевая платформа Windows
Header projectedfslib.h