/*++ 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 #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_