Функция JetSetLS

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

Функция JetSetLS

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

Windows XP:JetSetLS представлена в Windows XP.

    JET_ERR JET_API JetSetLS(
      __in          JET_SESID sesid,
      __in          JET_TABLEID tableid,
      __in          JET_LS ls,
      __in          JET_GRBIT grbit
    );

Параметры

sesid

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

tableid

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

ls

Дескриптор контекста, связанный с курсором или таблицей.

При указании JET_bitLSReset фактическое значение этого параметра игнорируется и используется JET_LSNil.

grbit

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

Значение

Значение

JET_bitLSCursor

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

Если ни JET_bitLSCursor, ни JET_bitLSTable не указаны, то предполагается JET_bitLSCursor.

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

JET_bitLSReset

Этот параметр указывает, что указанный дескриптор контекста следует игнорировать и что дескриптор контекста для выбранного объекта должен быть сброшен до JET_LSNil.

Важно отметить, что это действие не приведет к обратному вызову для очистки предыдущего значения дескриптора контекста для выбранного объекта. Правильную очистку предыдущего дескриптора контекста можно выполнить с помощью JetGetLS с JET_bitLSReset. Дополнительные сведения см. в разделе JetGetLS .

JET_bitLSTable

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

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

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

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

Код возврата

Описание

JET_errSuccess

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

JET_errClientRequestToStopJetService

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

JET_errInvalidgrbit

Один из запрошенных параметров был недопустим, неправильно использован или не реализован. Это может произойти для JetSetLS , если указаны JET_bitLSCursor и JET_bitLSTable.

JET_errInstanceUnavailable

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

JET_errLSAlreadySet

Данный дескриптор контекста не может быть связан с запрошенным объектом, так как с ним уже связан дескриптор контекста.

JET_errLSCallbackNotSpecified

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

JET_errNotInitialized

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

JET_errRestoreInProgress

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

JET_errTermInProgress

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

При успешном выполнении заданный дескриптор контекста был успешно связан с запрошенным объектом. Изменение состояния базы данных не произойдет.

В случае сбоя состояние запрошенного объекта не изменилось. Изменение состояния базы данных не произойдет.

Комментарии

Локальное хранилище для курсора или таблицы должно рассматриваться как энергонезависимый кэш. Сначала приложение должно попытаться получить дескриптор контекста с помощью JetGetLS. Если значение не задано (то есть оно JET_LSNil), приложение должно создать новый контекст и загрузить его в кэш с помощью JetSetLS. Приложение может очистить кэш с помощью вызова JetGetLS с JET_bitLSReset. Если ядро СУБД очищает кэш, будет создан обратный вызов среды выполнения, чтобы дать приложению возможность очистить этот контекст. Тип обратного вызова будет JET_cbtypFreeCursorLS для дескриптора контекста, связанного с курсором, и JET_cbtypFreeTableLS для дескриптора контекста, связанного с таблицей. В любом случае дескриптор контекста будет передан как pvArg1. Дополнительные сведения см. в разделе JET_CALLBACK .

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

Требования

Требование Значение

Клиент

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

Сервер

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

Верхняя часть

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

Библиотека

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

DLL

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

См. также:

JET_CALLBACK
JET_ERR
JET_GRBIT
JET_LS
JET_SESID
JET_TABLEID
JetGetLS
JetSetSystemParameter
Системные параметры