mirror of https://github.com/tongzx/nt5src
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
471 lines
8.6 KiB
471 lines
8.6 KiB
/*++
|
|
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_
|