JetDupCursor Function
Applies to: Windows | Windows Server
JetDupCursor Function
The JetDupCursor function duplicates an open cursor and returns a handle to the duplicated cursor. If the cursor that was duplicated was a read-only cursor then the duplicated cursor is also a read-only cursor. Any state related to constructing a search key or updating a record is not copied into the duplicated cursor. In addition, the location of the original cursor is not duplicated into the duplicated cursor. The duplicated cursor is always opened on the clustered index and its location is always on the first row of the table.
JET_ERR JET_API JetDupCursor(
__in JET_SESID sesid,
__in JET_TABLEID tableid,
__out JET_TABLEID* ptableid,
__in JET_GRBIT grbit
);
Parameters
sesid
The session to use for this call.
tableid
The cursor to use for this call.
ptableid
Pointer to tableid.
grbit
Reserved for future use.
Return Value
This function returns the JET_ERR datatype with one of the following return codes. For more information about the possible ESE errors, see Extensible Storage Engine Errors and Error Handling Parameters.
Return code |
Description |
---|---|
JET_errSuccess |
The operation completed successfully. |
JET_errClientRequestToStopJetService |
It is not possible to complete the operation because all activity on the instance associated with the session has ceased as a result of a call to JetStopService. |
JET_errInstanceUnavailable |
It is not possible to complete the operation because the instance associated with the session has encountered a fatal error that requires that access to all data be revoked to protect the integrity of that data. This error will only be returned by Windows XP and later releases. |
JET_errNotInitialized |
It is not possible to complete the operation because the instance associated with the session has not been initialized yet. |
JET_errOutOfCursors |
No available cursor resources exist. |
JET_errRestoreInProgress |
It is not possible to complete the operation because a restore operation is in progress on the instance associated with the session. |
JET_errSessionSharingViolation |
The same session cannot be used for more than one thread at the same time. This error will only be returned by Windows XP and later releases. |
JET_errTermInProgress |
It is not possible to complete the operation because the instance associated with the session is being shut down. |
On success, ptableid is set to a duplicated cursor.
On failure, no changes are made. The state of tableid is unchanged.
Remarks
The duplicated cursor does not have the entire cursor state copied. The location of the duplicated cursor, including the current index, is usually different from the given cursor. The duplicated cursor is always returned on the clustered index and on the first row in the table. If the table is empty, the duplicated cursor is not on any row.
Tables opened with JetDupCursor should usually be closed with JetCloseTable. The exception to this rule happens when JetDupCursor is called in a transaction and the transaction is rolled back (with JetRollback). When rolling back a transaction, the cursor is automatically closed. In this case, it is an error to close the table with JetCloseTable.
The number of tables that can be opened simultaneously is affected directly by JET_paramMaxOpenTables. See System Parameters for details.
Requirements
Requirement | Value |
---|---|
Client |
Requires Windows Vista, Windows XP, or Windows 2000 Professional. |
Server |
Requires Windows Server 2008, Windows Server 2003, or Windows 2000 Server. |
Header |
Declared in Esent.h. |
Library |
Use ESENT.lib. |
DLL |
Requires ESENT.dll. |
See Also
JET_GRBIT
JET_SESID
JET_TABLEID
JetCloseTable
JetRollback
JetStopService
System Parameters