Compartilhar via


PRJ_GET_DIRECTORY_ENUMERATION_CB função de retorno de chamada (projectedfslib.h)

Solicita informações de enumeração de diretório do provedor.

Sintaxe

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
)
{...}

Parâmetros

[in] callbackData

Informações sobre a operação. Os seguintes membros callbackData são necessários para implementar esse retorno de chamada:

FilePathName Identifica o diretório a ser enumerado.
Versioninfo Fornece informações de versão para o diretório a ser enumerado.
Sinalizadores Sinalizadores para controlar o que é retornado na enumeração . Os valores válidos são:
PRJ_CB_DATA_FLAG_ENUM_RETURN_SINGLE_ENTRY Esse bit será definido se o usuário estiver solicitando apenas uma entrada da enumeração . O provedor pode tratar isso como uma dica e pode optar por retornar mais de uma entrada para tornar uma enumeração que retorna um item por vez mais eficiente. Nesse caso, o ProjFS retornará uma única entrada para o usuário, invocando o provedor somente quando precisar de mais entradas.
PRJ_CB_DATA_FLAG_ENUM_RESTART_SCAN Esse bit será definido se a enumeração for iniciar na primeira entrada no diretório. Na primeira invocação desse retorno de chamada para uma sessão de enumeração, o provedor deve tratar esse sinalizador como definido, independentemente de seu valor. Todas as enumerações devem começar na primeira entrada. Em invocações subsequentes desse retorno de chamada, o provedor deve respeitar esse valor.
 

O provedor só pode acessar esse buffer enquanto o retorno de chamada estiver em execução. Se quiser aguardar a operação e exigir dados desse buffer, ele deverá fazer sua própria cópia dele.

[in] enumerationId

Um identificador para esta sessão de enumeração.

[in, optional] searchExpression

Um ponteiro para uma cadeia de caracteres Unicode terminada em nulo especificando uma expressão de pesquisa. A expressão de pesquisa pode incluir caracteres curinga. O provedor deve usar a função PrjDoesNameContainWildCards para determinar se os curingas estão presentes em searchExpression e deve usar a função PrjFileNameMatch para determinar se uma entrada em seu repositório de suporte corresponde a uma expressão de pesquisa que contém curingas.

Esse parâmetro é opcional e pode ser NULL.

  • Se esse parâmetro não for NULL, o provedor deverá retornar apenas as entradas de diretório cujos nomes correspondem à expressão de pesquisa.
  • Se esse parâmetro for NULL, o provedor deverá retornar todas as entradas de diretório.

O provedor deve capturar o valor desse parâmetro na primeira invocação desse retorno de chamada para uma sessão de enumeração e usá-lo em invocações subsequentes, ignorando esse parâmetro nessas invocações, a menos que PRJ_CB_DATA_FLAG_ENUM_RESTART_SCAN seja especificado no membro Flags de callbackData. Nesse caso, o provedor deve capturar novamente o valor de searchExpression.

[in] dirEntryBufferHandle

Um identificador opaco para uma estrutura que recebe os resultados da enumeração do provedor. O provedor usa a rotina PrjFillDirEntryBuffer para preencher a estrutura.

Retornar valor

Código de retorno Descrição
S_OK
O provedor adicionou com êxito pelo menos uma entrada a dirEntryBufferHandle ou nenhuma entrada na pesquisa de correspondência do repositório do provedorExpression.
HRESULT_FROM_WIN32(ERROR_INSUFFICIENT_BUFFER)
O provedor recebeu esse erro de PrjFillDirEntryBuffer para o primeiro arquivo ou diretório que tentou adicionar a dirEntryBufferHandle.
HRESULT_FROM_WIN32(ERROR_IO_PENDING)
O provedor deseja concluir a operação posteriormente.
 

Um código de erro HRESULT apropriado se o provedor falhar na operação.

Comentários

O ProjFS invoca esse retorno de chamada uma ou mais vezes depois de invocar PRJ_START_DIRECTORY_ENUMERATION_CB. Consulte a seção Comentários do PRJ_START_DIRECTORY_ENUMERATION_CB para obter mais informações.

Requisitos

Requisito Valor
Cliente mínimo com suporte Windows 10, versão 1809 [somente aplicativos da área de trabalho]
Servidor mínimo com suporte Windows Server [somente aplicativos da área de trabalho]
Plataforma de Destino Windows
Cabeçalho projectedfslib.h