Share via


Função JetGetCurrentIndex

Aplica-se a: Windows | Windows Server

Função JetGetCurrentIndex

A função JetGetCurrentIndex determina o nome do índice atual de um determinado cursor. Esse nome também é usado para selecionar novamente esse índice como o índice atual usando JetSetCurrentIndex. Ele também pode ser usado para descobrir as propriedades desse índice usando JetGetTableIndexInfo.

    JET_ERR JET_API JetGetCurrentIndex(
      __in          JET_SESID sesid,
      __in          JET_TABLEID tableid,
      __out         JET_PSTR szIndexName,
      __in          unsigned long cchIndexName
    );

Parâmetros

sesid

A sessão a ser usada para essa chamada.

Tableid

O cursor a ser usado para essa chamada.

szIndexName

O buffer de saída que recebe o nome do índice atual do cursor.

cchIndexName

O tamanho máximo em caracteres do buffer de saída.

Valor Retornado

Essa função retorna o tipo de dados JET_ERR com um dos seguintes códigos de retorno. Para obter mais informações sobre os possíveis erros de ESE, consulte Erros extensíveis do mecanismo de armazenamento e parâmetros de tratamento de erros.

Código de retorno

Descrição

JET_errSuccess

A operação foi concluída com sucesso.

JET_errClientRequestToStopJetService

Não é possível concluir a operação porque todas as atividades na instância associada à sessão cessaram como resultado de uma chamada para JetStopService.

JET_errInstanceUnavailable

Não é possível concluir a operação porque a instância associada à sessão encontrou um erro fatal que exige que o acesso a todos os dados seja revogado para proteger a integridade desses dados. Esse erro só será retornado pelo Windows XP e versões posteriores.

JET_errNotInitialized

Não é possível concluir a operação porque a instância associada à sessão ainda não foi inicializada.

JET_errRestoreInProgress

Não é possível concluir a operação porque uma operação de restauração está em andamento na instância associada à sessão.

JET_errSessionSharingViolation

A mesma sessão não pode ser usada para mais de um thread ao mesmo tempo. Esse erro só será retornado pelo Windows XP e versões posteriores.

JET_errTermInProgress

Não é possível concluir a operação porque a instância associada à sessão está sendo desligada.

JET_wrnBufferTruncated

A operação foi concluída com êxito, mas o buffer de saída era muito pequeno para receber todo o nome do índice.

O buffer de saída foi preenchido com o máximo de nome de índice que caberia. Se o buffer de saída tiver pelo menos um caractere de comprimento, a cadeia de caracteres nesse buffer de saída será terminada em nulo.

Nota Esse erro não será retornado se cchIndexName for zero. Consulte a seção Comentários para obter mais informações.

Em caso de êxito, o nome do índice atual do cursor fornecido será retornado no buffer de saída. Se JET_wrnBufferTruncated for retornado, o buffer de saída conterá o máximo do nome do índice que caberá no espaço fornecido. Se o buffer de saída tiver pelo menos um caractere de comprimento, a cadeia de caracteres retornada nesse buffer será terminada em nulo. Nenhuma alteração no estado do banco de dados ocorrerá.

Em caso de falha, o estado do buffer de saída será indefinido. Nenhuma alteração no estado do banco de dados ocorrerá.

Comentários

Se não houver nenhum índice atual para o cursor, uma cadeia de caracteres vazia será retornada. Isso pode acontecer quando o cursor está no índice clusterizado da tabela e nenhum índice primário foi definido. Esse índice é conhecido como o índice sequencial da tabela e não tem nenhuma definição. De qualquer forma, definir o índice atual como uma cadeia de caracteres vazia usando JetSetCurrentIndex selecionará o índice clusterizado, independentemente da presença de uma definição de índice primário.

Há um bug importante nessa função que está presente em todas as versões. Se o buffer de saída for muito pequeno para receber todo o nome do índice e o buffer de saída tiver pelo menos um caractere de comprimento, JET_wrnBufferTruncated NÃO será retornado. JET_errSuccess será retornado. Para evitar esse problema, o buffer de saída sempre deve ter pelo menos JET_cbNameMost + 1 (65) caracteres de comprimento.

Requisitos

Requisito Valor

Cliente

Requer Windows Vista, Windows XP ou Windows 2000 Professional.

Servidor

Requer o Windows Server 2008, o Windows Server 2003 ou o Windows 2000 Server.

Cabeçalho

Declarado em Esent.h.

Biblioteca

Use ESENT.lib.

DLL

Requer ESENT.dll.

Unicode

Implementado como JetGetCurrentIndexW (Unicode) e JetGetCurrentIndexA (ANSI).

Consulte Também

JET_ERR
JET_SESID
JET_TABLEID
JetGetTableIndexInfo
JetSetCurrentIndex