JetGetBookmark 함수

적용 대상: Windows | Windows Server

JetGetBookmark 함수

JetGetBookmark 함수는 커서의 현재 위치에 있는 인덱스 항목과 연결된 레코드의 책갈피를 검색합니다. 그런 다음 이 책갈피를 사용하여 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
    );

매개 변수

sesid

이 호출에 사용할 세션입니다.

tableid

이 호출에 사용할 커서입니다.

pvBookmark

책갈피를 받는 출력 버퍼입니다.

cbMax

출력 버퍼의 최대 크기(바이트)입니다.

pcbActual

책갈피의 실제 크기(바이트)입니다.

이 매개 변수가 NULL 이면 책갈피의 실제 크기가 반환되지 않습니다.

출력 버퍼가 너무 작으면 책갈피의 실제 크기가 계속 반환됩니다. 즉, 이 숫자는 출력 버퍼의 크기보다 커야 합니다.

Return Value

이 함수는 다음 반환 코드 중 하나를 사용하여 JET_ERR 데이터 형식을 반환합니다. 가능한 ESE 오류에 대한 자세한 내용은 확장 가능한 Storage 엔진 오류오류 처리 매개 변수를 참조하세요.

반환 코드

설명

JET_errSuccess

작업이 성공적으로 완료되었습니다.

JET_errBufferTooSmall

작업이 성공적으로 완료되었지만 출력 버퍼가 너무 작아서 전체 책갈피를 받을 수 없습니다. 출력 버퍼는 책갈피만큼 채워져 있습니다. 요청된 경우 책갈피의 실제 크기도 반환되었습니다.

JET_errClientRequestToStopJetService

JetStopService 호출로 인해 세션과 연결된 인스턴스의 모든 작업이 중단되었으므로 작업을 완료할 수 없습니다.

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 함수를 사용하여 책갈피를 비교하여 원본 레코드 테이블에 대한 기본 인덱스에 상대적 순서를 설정할 수 있습니다. 해당 테이블에 대해 기본 인덱스가 정의되지 않은 경우 해당 테이블에서 책갈피의 상대적 순서를 사용하는 것은 의미가 없습니다.

  • 서로 다른 테이블의 레코드 책갈피를 비교하는 것은 의미가 없습니다.

  • 책갈피는 항상 Windows Vista 이전의 JET_cbBookmarkMost(256) 바이트보다 작거나 같습니다.

Windows Vista: Windows Vista 이상 릴리스에서는 책갈피가 JET_cbBookmarkMost(256) 바이트보다 클 수 있습니다. 책갈피의 최대 크기는 JET_paramKeyMost + 1의 현재 값과 같습니다.

요구 사항

요구 사항

클라이언트

Windows Vista, Windows XP 또는 Windows 2000 Professional 필요합니다.

서버

Windows Server 2008, Windows Server 2003 또는 Windows 2000 Server가 필요합니다.

머리글

Esent.h에서 선언되었습니다.

라이브러리

ESENT.lib를 사용합니다.

DLL

ESENT.dll 필요합니다.

참고 항목

JET_ERR
JET_SESID
JET_TABLEID
JetGoToBookmark
JetStopService
memcmp