Função JetGetBookmark

Aplica-se a: Windows | Servidor Windows

Função JetGetBookmark

A função JetGetBookmark recupera o indicador do registro associado à entrada de índice na posição atual de um cursor. Esse indicador pode ser usado para reposicionar esse cursor de volta para o mesmo registro usando JetGoToBookmark.

    JET_ERR JET_API JetGetBookmark(
      __in          JET_SESID sesid,
      __in          JET_TABLEID tableid,
      __out_opt     void* pvBookmark,
      __in          unsigned long cbMax,
      __out_opt     unsigned long* pcbActual
    );

Parâmetros

sesid

A sessão a ser usada para essa chamada.

Tableid

O cursor a ser usado para essa chamada.

pvBookmark

O buffer de saída que recebe o indicador.

cbMax

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

pcbActual

O tamanho real, em bytes, do indicador.

Se esse parâmetro for NULL , o tamanho real do indicador não será retornado.

Se o buffer de saída for muito pequeno, o tamanho real do indicador ainda será retornado. Isso significa que esse número será maior que o tamanho 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 do ESE, consulte Erros extensíveis do mecanismo 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_errBufferTooSmall

A operação foi concluída com êxito, mas o buffer de saída era muito pequeno para receber o indicador inteiro. O buffer de saída foi preenchido com o máximo de indicador que caberia. O tamanho real do indicador também foi retornado, se solicitado.

JET_errClientRequestToStopJetService

A operação não pode ser concluída porque toda a atividade na instância associada à sessão foi interrompida como resultado de uma chamada para JetStopService.

JET_errInstanceUnavailable

A operação não pode ser concluída 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.

Windows XP: esses valores retornados são introduzidos em Windows XP.

JET_errNoCurrentRecord

O cursor não está posicionado em um registro. Isso pode ocorrer por vários motivos diferentes. Por exemplo, isso ocorrerá se o cursor estiver posicionado após o último registro no índice atual.

JET_errNotInitialized

A operação não pode ser concluída porque a instância associada à sessão ainda não foi inicializada.

JET_errRestoreInProgress

A operação não pode ser concluída 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.

Windows XP: esse valor retornado é introduzido em Windows XP.

JET_errTermInProgress

A operação não pode ser concluída porque a instância associada à sessão está sendo desligada.

Se essa função for bem-sucedida, o indicador do registro associado à entrada de índice na posição atual de um cursor será retornado no buffer de saída. Nenhuma alteração no estado do banco de dados ocorrerá.

Se essa função falhar, o estado do buffer de saída e o tamanho real do indicador serão indefinidos, a menos que JET_errBufferTooSmall tenha sido retornado. Caso JET_errBufferTooSmall seja retornado, o buffer de saída conterá tanto do indicador quanto caberá no espaço fornecido e o tamanho real do indicador será preciso. Nenhuma alteração no estado do banco de dados ocorrerá.

Comentários

Os indicadores geralmente devem ser tratados como partes opacas de dados. Nenhuma tentativa deve ser feita para explorar a estrutura interna desses dados. No entanto, as seguintes condições são verdadeiras para todos os indicadores ESENT:

  • Um indicador identifica exclusivamente um registro em uma determinada tabela.

  • O indicador de um registro não será alterado para o tempo de vida desse registro.

  • O indicador de um registro é o mesmo que a chave desse registro no índice primário sobre a tabela que contém esse registro. Se nenhum índice primário for definido sobre essa tabela, o mecanismo de banco de dados criará seu próprio indicador para o registro.

  • Os indicadores podem ser comparados uns com os outros usando a função memcmp para estabelecer sua ordenação relativa no índice primário sobre a tabela dos registros de origem. Se nenhum índice primário for definido sobre essa tabela, não será significativo usar a ordenação relativa de indicadores dessa tabela.

  • Não faz sentido comparar indicadores de registros de tabelas diferentes entre si.

  • Um indicador é sempre menor ou igual a JET_cbBookmarkMost (256) bytes de comprimento, antes de Windows Vista.

Windows Vista: no Windows Vista e versões posteriores, os indicadores podem ser maiores que JET_cbBookmarkMost (256) bytes. O tamanho máximo de um indicador é igual ao valor atual de JET_paramKeyMost + 1.

Requisitos

Requisito Valor

Cliente

Requer Windows Vista, Windows XP ou Windows 2000 Professional.

Servidor

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

Cabeçalho

Declarado em Esent.h.

Biblioteca

Use ESENT.lib.

DLL

Requer ESENT.dll.

Consulte Também

JET_ERR
JET_SESID
JET_TABLEID
JetGoToBookmark
JetStopService
memcmp