472 lines
8.6 KiB
C
472 lines
8.6 KiB
C
/*++
|
||
Copyright (c) 1989-1999 Microsoft Corporation
|
||
|
||
Module Name:
|
||
|
||
scejetp.h
|
||
|
||
Abstract:
|
||
|
||
Header for scejet.c - Sce-Jet service APIs
|
||
|
||
Author:
|
||
|
||
|
||
Revision History:
|
||
|
||
|
||
--*/
|
||
|
||
#ifndef _SCEJETP_
|
||
#define _SCEJETP_
|
||
|
||
#include <esent.h>
|
||
|
||
#ifdef __cplusplus
|
||
extern "C" {
|
||
#endif
|
||
//
|
||
// type used when open a table and a section
|
||
//
|
||
typedef enum _SCEJET_TABLE_TYPE {
|
||
|
||
SCEJET_TABLE_SCP,
|
||
SCEJET_TABLE_SAP,
|
||
SCEJET_TABLE_SMP,
|
||
SCEJET_TABLE_VERSION,
|
||
SCEJET_TABLE_SECTION,
|
||
SCEJET_TABLE_GPO,
|
||
SCEJET_TABLE_TATTOO
|
||
|
||
} SCEJET_TABLE_TYPE;
|
||
|
||
typedef enum _SCEJET_CREATE_FLAG {
|
||
|
||
SCEJET_CREATE_IN_BUFFER,
|
||
SCEJET_CREATE_NO_TABLEID
|
||
|
||
} SCEJET_CREATE_FLAG;
|
||
|
||
//
|
||
// type used when open a database file
|
||
//
|
||
typedef enum _SCEJET_OPEN_TYPE {
|
||
|
||
SCEJET_OPEN_READ_WRITE=0,
|
||
SCEJET_OPEN_EXCLUSIVE,
|
||
SCEJET_OPEN_READ_ONLY,
|
||
SCEJET_OPEN_NOCHECK_VERSION
|
||
|
||
} SCEJET_OPEN_TYPE;
|
||
|
||
//
|
||
// type used when create a database file
|
||
//
|
||
typedef enum _SCEJET_CREATE_TYPE {
|
||
|
||
SCEJET_RETURN_ON_DUP=0,
|
||
SCEJET_OVERWRITE_DUP,
|
||
SCEJET_OPEN_DUP,
|
||
SCEJET_OPEN_DUP_EXCLUSIVE
|
||
|
||
} SCEJET_CREATE_TYPE;
|
||
|
||
//
|
||
// type used when delete lines
|
||
//
|
||
typedef enum _SCEJET_DELETE_TYPE {
|
||
|
||
SCEJET_DELETE_LINE=0,
|
||
SCEJET_DELETE_LINE_NO_CASE,
|
||
SCEJET_DELETE_PARTIAL,
|
||
SCEJET_DELETE_PARTIAL_NO_CASE,
|
||
SCEJET_DELETE_SECTION
|
||
|
||
} SCEJET_DELETE_TYPE;
|
||
|
||
//
|
||
// type used when find a line
|
||
//
|
||
typedef enum _SCEJET_FIND_TYPE {
|
||
SCEJET_CURRENT=0,
|
||
SCEJET_EXACT_MATCH,
|
||
SCEJET_PREFIX_MATCH,
|
||
SCEJET_NEXT_LINE,
|
||
SCEJET_CLOSE_VALUE,
|
||
SCEJET_EXACT_MATCH_NO_CASE,
|
||
SCEJET_PREFIX_MATCH_NO_CASE
|
||
|
||
} SCEJET_FIND_TYPE;
|
||
|
||
|
||
typedef enum _SCEJET_SEEK_FLAG {
|
||
|
||
SCEJET_SEEK_GT=0,
|
||
SCEJET_SEEK_EQ,
|
||
SCEJET_SEEK_GE,
|
||
SCEJET_SEEK_GT_NO_CASE,
|
||
SCEJET_SEEK_EQ_NO_CASE,
|
||
SCEJET_SEEK_GE_NO_CASE,
|
||
SCEJET_SEEK_GE_DONT_CARE
|
||
|
||
} SCEJET_SEEK_FLAG;
|
||
|
||
#define SCEJET_PREFIX_MAXLEN 1024
|
||
|
||
typedef struct _SCE_CONTEXT {
|
||
DWORD Type;
|
||
JET_SESID JetSessionID;
|
||
JET_DBID JetDbID;
|
||
SCEJET_OPEN_TYPE OpenFlag;
|
||
// scp table
|
||
JET_TABLEID JetScpID;
|
||
JET_COLUMNID JetScpSectionID;
|
||
JET_COLUMNID JetScpNameID;
|
||
JET_COLUMNID JetScpValueID;
|
||
JET_COLUMNID JetScpGpoID;
|
||
// sap table
|
||
JET_TABLEID JetSapID;
|
||
JET_COLUMNID JetSapSectionID;
|
||
JET_COLUMNID JetSapNameID;
|
||
JET_COLUMNID JetSapValueID;
|
||
// smp table
|
||
JET_TABLEID JetSmpID;
|
||
JET_COLUMNID JetSmpSectionID;
|
||
JET_COLUMNID JetSmpNameID;
|
||
JET_COLUMNID JetSmpValueID;
|
||
// section table
|
||
JET_TABLEID JetTblSecID;
|
||
JET_COLUMNID JetSecNameID;
|
||
JET_COLUMNID JetSecID;
|
||
} SCECONTEXT, *PSCECONTEXT;
|
||
|
||
typedef struct _SCE_SECTION {
|
||
JET_SESID JetSessionID;
|
||
JET_DBID JetDbID;
|
||
JET_TABLEID JetTableID;
|
||
JET_COLUMNID JetColumnSectionID;
|
||
JET_COLUMNID JetColumnNameID;
|
||
JET_COLUMNID JetColumnValueID;
|
||
JET_COLUMNID JetColumnGpoID;
|
||
DOUBLE SectionID;
|
||
} SCESECTION, *PSCESECTION;
|
||
|
||
|
||
|
||
//
|
||
// To Open existing profile database.
|
||
//
|
||
#define SCE_TABLE_OPTION_MERGE_POLICY 0x1
|
||
#define SCE_TABLE_OPTION_TATTOO 0x2
|
||
#define SCE_TABLE_OPTION_DEMOTE_TATTOO 0x4
|
||
|
||
SCESTATUS
|
||
SceJetOpenFile(
|
||
IN LPSTR ProfileFileName,
|
||
IN SCEJET_OPEN_TYPE Flags,
|
||
IN DWORD dwTableOptions,
|
||
OUT PSCECONTEXT *hProfile
|
||
);
|
||
|
||
//
|
||
// To create a new profile
|
||
//
|
||
SCESTATUS
|
||
SceJetCreateFile(
|
||
IN LPSTR ProfileFileName,
|
||
IN SCEJET_CREATE_TYPE Flags,
|
||
IN DWORD dwTableOptions,
|
||
OUT PSCECONTEXT *hProfile
|
||
);
|
||
|
||
//
|
||
// close the profile database.
|
||
//
|
||
SCESTATUS
|
||
SceJetCloseFile(
|
||
IN PSCECONTEXT hProfile,
|
||
IN BOOL TermSession,
|
||
IN BOOL Terminate
|
||
);
|
||
|
||
//
|
||
// To Open a section in the profile.
|
||
//
|
||
SCESTATUS
|
||
SceJetOpenSection(
|
||
IN PSCECONTEXT hProfile,
|
||
IN DOUBLE SectionID,
|
||
IN SCEJET_TABLE_TYPE tblType,
|
||
OUT PSCESECTION *hSection
|
||
);
|
||
|
||
//
|
||
// To get line count in the section.
|
||
//
|
||
SCESTATUS
|
||
SceJetGetLineCount(
|
||
IN PSCESECTION hSection,
|
||
IN PWSTR LinePrefix OPTIONAL,
|
||
IN BOOL bExactCase,
|
||
OUT DWORD *Count
|
||
);
|
||
|
||
//
|
||
// To delete a section or current line
|
||
//
|
||
SCESTATUS
|
||
SceJetDelete(
|
||
IN PSCESECTION hSection,
|
||
IN PWSTR LinePrefix,
|
||
IN BOOL bObjectFolder,
|
||
IN SCEJET_DELETE_TYPE Flags
|
||
);
|
||
|
||
SCESTATUS
|
||
SceJetDeleteAll(
|
||
IN PSCECONTEXT cxtProfile,
|
||
IN LPSTR TblName OPTIONAL,
|
||
IN SCEJET_TABLE_TYPE TblType
|
||
);
|
||
|
||
//
|
||
// close a section context.
|
||
//
|
||
SCESTATUS
|
||
SceJetCloseSection(
|
||
IN PSCESECTION *hSection,
|
||
IN BOOL DestroySection
|
||
);
|
||
|
||
//
|
||
// To get the line matching the name in the section.
|
||
//
|
||
SCESTATUS
|
||
SceJetGetValue(
|
||
IN PSCESECTION hSection,
|
||
IN SCEJET_FIND_TYPE Flags,
|
||
IN PWSTR LinePrefix OPTIONAL,
|
||
IN PWSTR ActualName OPTIONAL,
|
||
IN DWORD NameBufLen,
|
||
OUT DWORD *RetNameLen OPTIONAL,
|
||
IN PWSTR Value OPTIONAL,
|
||
IN DWORD ValueBufLen,
|
||
OUT DWORD *RetValueLen OPTIONAL
|
||
);
|
||
|
||
//
|
||
// To set a line in the section (placed alphabetically by the name)
|
||
//
|
||
SCESTATUS
|
||
SceJetSetLine(
|
||
IN PSCESECTION hSection,
|
||
IN PWSTR Name,
|
||
IN BOOL bReserveCase,
|
||
IN PWSTR Value,
|
||
IN DWORD ValueLen,
|
||
IN LONG GpoID
|
||
);
|
||
|
||
//
|
||
// other helper APIs
|
||
//
|
||
|
||
SCESTATUS
|
||
SceJetCreateTable(
|
||
IN PSCECONTEXT cxtProfile,
|
||
IN LPSTR tblName,
|
||
IN SCEJET_TABLE_TYPE tblType,
|
||
IN SCEJET_CREATE_FLAG nFlags,
|
||
IN JET_TABLEID *TableID OPTIONAL,
|
||
IN JET_COLUMNID *ColumnID OPTIONAL
|
||
);
|
||
|
||
SCESTATUS
|
||
SceJetOpenTable(
|
||
IN PSCECONTEXT cxtProfile,
|
||
IN LPSTR tblName,
|
||
IN SCEJET_TABLE_TYPE tblType,
|
||
IN SCEJET_OPEN_TYPE OpenType,
|
||
OUT JET_TABLEID *TableID
|
||
);
|
||
|
||
SCESTATUS
|
||
SceJetDeleteTable(
|
||
IN PSCECONTEXT cxtProfile,
|
||
IN LPSTR tblName,
|
||
IN SCEJET_TABLE_TYPE tblType
|
||
);
|
||
|
||
SCESTATUS
|
||
SceJetCheckVersion(
|
||
IN PSCECONTEXT cxtProfile,
|
||
OUT FLOAT *pVersion OPTIONAL
|
||
);
|
||
|
||
SCESTATUS
|
||
SceJetGetSectionIDByName(
|
||
IN PSCECONTEXT cxtProfile,
|
||
IN PCWSTR Name,
|
||
OUT DOUBLE *SectionID
|
||
);
|
||
|
||
SCESTATUS
|
||
SceJetGetSectionNameByID(
|
||
IN PSCECONTEXT cxtProfile,
|
||
IN DOUBLE SectionID,
|
||
OUT PWSTR Name OPTIONAL,
|
||
IN OUT LPDWORD pNameLen OPTIONAL
|
||
);
|
||
|
||
SCESTATUS
|
||
SceJetAddSection(
|
||
IN PSCECONTEXT cxtProfile,
|
||
IN PCWSTR Name,
|
||
OUT DOUBLE *SectionID
|
||
);
|
||
|
||
SCESTATUS
|
||
SceJetDeleteSectionID(
|
||
IN PSCECONTEXT cxtProfile,
|
||
IN DOUBLE SectionID,
|
||
IN PCWSTR Name
|
||
);
|
||
|
||
SCESTATUS
|
||
SceJetGetTimeStamp(
|
||
IN PSCECONTEXT cxtProfile,
|
||
OUT PLARGE_INTEGER ConfigTimeStamp,
|
||
OUT PLARGE_INTEGER AnalyzeTimeStamp
|
||
);
|
||
|
||
SCESTATUS
|
||
SceJetSetTimeStamp(
|
||
IN PSCECONTEXT cxtProfile,
|
||
IN BOOL Flag,
|
||
IN LARGE_INTEGER NewTimeStamp
|
||
);
|
||
|
||
SCESTATUS
|
||
SceJetGetDescription(
|
||
IN PSCECONTEXT cxtProfile,
|
||
OUT PWSTR *Description
|
||
);
|
||
|
||
SCESTATUS
|
||
SceJetStartTransaction(
|
||
IN PSCECONTEXT cxtProfile
|
||
);
|
||
|
||
SCESTATUS
|
||
SceJetCommitTransaction(
|
||
IN PSCECONTEXT cxtProfile,
|
||
IN JET_GRBIT grbit
|
||
);
|
||
|
||
SCESTATUS
|
||
SceJetRollback(
|
||
IN PSCECONTEXT cxtProfile,
|
||
IN JET_GRBIT grbit
|
||
);
|
||
|
||
SCESTATUS
|
||
SceJetSetValueInVersion(
|
||
IN PSCECONTEXT cxtProfile,
|
||
IN LPSTR TableName,
|
||
IN LPSTR ColumnName,
|
||
IN PWSTR Value,
|
||
IN DWORD ValueLen, // number of bytes
|
||
IN DWORD Prep
|
||
);
|
||
|
||
SCESTATUS
|
||
SceJetSeek(
|
||
IN PSCESECTION hSection,
|
||
IN PWSTR LinePrefix,
|
||
IN DWORD PrefixLength,
|
||
IN SCEJET_SEEK_FLAG SeekBit
|
||
);
|
||
|
||
SCESTATUS
|
||
SceJetMoveNext(
|
||
IN PSCESECTION hSection
|
||
);
|
||
|
||
SCESTATUS
|
||
SceJetJetErrorToSceStatus(
|
||
IN JET_ERR JetErr
|
||
);
|
||
|
||
SCESTATUS
|
||
SceJetRenameLine(
|
||
IN PSCESECTION hSection,
|
||
IN PWSTR Name,
|
||
IN PWSTR NewName,
|
||
IN BOOL bReserveCase
|
||
);
|
||
|
||
SCESTATUS
|
||
SceJetInitialize(OUT JET_ERR *pJetErr OPTIONAL);
|
||
|
||
|
||
SCESTATUS
|
||
SceJetTerminate(BOOL bCleanVs);
|
||
|
||
SCESTATUS
|
||
SceJetTerminateNoCritical(BOOL bCleanVs);
|
||
|
||
VOID
|
||
SceJetInitializeData();
|
||
|
||
BOOL
|
||
SceJetDeleteJetFiles(
|
||
IN PWSTR DbFileName OPTIONAL
|
||
);
|
||
|
||
SCESTATUS
|
||
SceJetSetCurrentLine(
|
||
IN PSCESECTION hSection,
|
||
IN PWSTR Value,
|
||
IN DWORD ValueLen
|
||
);
|
||
|
||
#define SCEJET_MERGE_TABLE_1 0x10L
|
||
#define SCEJET_MERGE_TABLE_2 0x20L
|
||
#define SCEJET_LOCAL_TABLE 0x30L
|
||
|
||
BOOL
|
||
ScepIsValidContext(
|
||
PSCECONTEXT context
|
||
);
|
||
|
||
SCESTATUS
|
||
SceJetGetGpoNameByID(
|
||
IN PSCECONTEXT cxtProfile,
|
||
IN LONG GpoID,
|
||
OUT PWSTR Name OPTIONAL,
|
||
IN OUT LPDWORD pNameLen,
|
||
OUT PWSTR DisplayName OPTIONAL,
|
||
IN OUT LPDWORD pDispNameLen
|
||
);
|
||
|
||
LONG
|
||
SceJetGetGpoIDByName(
|
||
IN PSCECONTEXT cxtProfile,
|
||
IN PWSTR szGpoName,
|
||
IN BOOL bAdd
|
||
);
|
||
|
||
SCESTATUS
|
||
SceJetGetGpoID(
|
||
IN PSCESECTION hSection,
|
||
IN PWSTR ObjectName,
|
||
IN JET_COLUMNID JetColGpoID OPTIONAL,
|
||
OUT LONG *pGpoID
|
||
);
|
||
|
||
#ifdef __cplusplus
|
||
}
|
||
#endif
|
||
|
||
#endif // _SCEJETP_
|