Функция Жетжетбукмарк

Применимо к: Windows | Windows Server

Функция Жетжетбукмарк

Функция жетжетбукмарк извлекает закладку для записи, связанной с элементом индекса, в текущем положении курсора. Эту закладку можно использовать для перемещения курсора обратно в ту же запись с помощью жетготобукмарк.

    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
    );

Параметры

сесид

Сеанс, используемый для этого вызова.

TableID

Курсор, используемый для этого вызова.

пвбукмарк

Выходной буфер, получающий закладку.

кбмакс

Максимальный размер выходного буфера в байтах.

пкбактуал

Фактический размер закладки в байтах.

Если этот параметр имеет значение NULL , фактический размер закладки не будет возвращен.

Если выходной буфер слишком мал, фактический размер закладки все равно будет возвращен. Это означает, что это число будет больше, чем размер выходного буфера.

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

Эта функция возвращает JET_ERR DataType с одним из следующих кодов возврата. Дополнительные сведения о возможных ошибках ESE см. в разделе ошибки подсистемы хранилища и Параметры обработки ошибок.

Код возврата

Описание

JET_errSuccess

Операция выполнена успешно.

JET_errBufferTooSmall

Операция успешно завершена, но выходной буфер слишком мал для получения всей закладки. Выходной буфер заполнен объемом заданной закладки. При запросе также возвращается фактический размер закладки.

JET_errClientRequestToStopJetService

Операция не может быть завершена, так как все действия в экземпляре, связанном с сеансом, были прекращены в результате вызова жетстопсервице.

JET_errInstanceUnavailable

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

Windows XP: Эти возвращаемые значения появились в Windows XP.

JET_errNoCurrentRecord

Курсор не располагается на записи. Это может произойти по различным причинам. Например, это произойдет, если курсор помещается после последней записи текущего индекса.

JET_errNotInitialized

Операция не может быть завершена, так как экземпляр, связанный с сеансом, еще не инициализирован.

JET_errRestoreInProgress

Операция не может быть завершена, так как выполняется операция восстановления на экземпляре, связанном с сеансом.

JET_errSessionSharingViolation

Один и тот же сеанс нельзя использовать одновременно для нескольких потоков.

Windows XP: Это возвращаемое значение введено в Windows XP.

JET_errTermInProgress

Не удается выполнить операцию, так как выполняется завершение работы экземпляра, связанного с сеансом.

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

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

Комментарии

Закладки обычно должны рассматриваться как непрозрачные фрагменты данных. Для использования внутренней структуры этих данных не нужно предпринимать никаких попыток. Однако для всех закладок ESENT справедливы следующие условия:

  • Закладка однозначно определяет запись в заданной таблице.

  • Закладка записи не изменится в течение времени существования этой записи.

  • Закладка записи совпадает с ключом записи на первичном индексе таблицы, содержащей эту запись. Если в этой таблице не определен первичный индекс, ядро СУБД создаст собственную закладку для записи.

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

  • Нет смысла сравнивать закладки записей из разных таблиц друг с другом.

  • Длина закладки всегда меньше или равна JET_cbBookmarkMost (256) байт до Windows Vista.

Windows Vista: В Windows Vista и более поздних выпусках закладки могут быть больше JET_cbBookmarkMost (256) байт. Максимальный размер закладки равен текущему значению JET_paramKeyMost + 1.

Требования

Клиент

Требуется Windows Vista, Windows XP или Windows 2000 Professional.

Server

Требуется Windows Server 2008, Windows Server 2003 или Windows 2000 Server.

Header

Объявлено в ESENT. h.

Библиотека

Используйте ESENT. lib.

КОМПОНОВКИ

Требуется ESENT.dll.

См. также:

JET_ERR
JET_SESID
JET_TABLEID
жетготобукмарк
жетстопсервице
memcmp