⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 windbase.h

📁 此程序为EVC编写的MIS系统
💻 H
📖 第 1 页 / 共 2 页
字号:
#define CEDB_MAXDBASENAMELEN 32
#define CEDB_MAXSORTORDER    4

// values for validity mask flags
#define CEDB_VALIDNAME     0x0001
#define CEDB_VALIDTYPE     0x0002
#define CEDB_VALIDSORTSPEC 0x0004
#define CEDB_VALIDMODTIME  0x0008
#define CEDB_VALIDDBFLAGS  0x0010
#define CEDB_VALIDCREATE   (CEDB_VALIDNAME | CEDB_VALIDTYPE | CEDB_VALIDSORTSPEC | CEDB_VALIDDBFLAGS)

// values for dbflags
#define CEDB_NOCOMPRESS    0x00010000
#define CEDB_SYSTEMDB      0x00020000


// @struct CEDBASEINFO | Contains information about a database object    
typedef struct _CEDBASEINFO {
    DWORD    dwFlags;           //@field Indicates which fields are valid. Possible values are:
                                //  @flag CEDB_VALIDNAME | The name field is valid and should be used
                                //  @flag CEDB_VALIDTYPE | The type field is valid and should be used
                                //  @flag CEDB_VALIDSORTSPEC | The sortspecs are valid and should be used
    WCHAR    szDbaseName[CEDB_MAXDBASENAMELEN]; //@field Name of Database. Max CEDB_MAXDBASENAMELEN characters.
    DWORD    dwDbaseType;       //@field A type ID for this database
    WORD     wNumRecords;       //@field Number of records in the database
    WORD     wNumSortOrder;     //@field Number of sort orders active in the database
                                // Maximum is CEDB_MAXSORTORDER.
    DWORD    dwSize;            //@field Size in bytes that this database is using
    FILETIME ftLastModified;    //@field Last time this database was modified
    SORTORDERSPEC rgSortSpecs[CEDB_MAXSORTORDER];  //@field Actual sort order descriptions. 
                                // Only first wNumSortOrder of this array are valid.
} CEDBASEINFO, *PCEDBASEINFO;

#define CEDBASEINFOEX_VERSION 1
// @struct CEDBASEINFOEX | Contains extended information about a database object    
typedef struct _CEDBASEINFOEX {
    WORD     wVersion;          //@field Version of this structure
    WORD     wNumSortOrder;     //@field Number of sort orders active in the database
                                // Maximum is CEDB_MAXSORTORDER.
    DWORD    dwFlags;           //@field Indicates which fields are valid. Possible values are:
                                //  @flag CEDB_VALIDNAME | The name field is valid and should be used
                                //  @flag CEDB_VALIDTYPE | The type field is valid and should be used
                                //  @flag CEDB_VALIDSORTSPEC | The sortspecs are valid and should be used
    WCHAR    szDbaseName[CEDB_MAXDBASENAMELEN]; //@field Name of Database. Max CEDB_MAXDBASENAMELEN characters.
    DWORD    dwDbaseType;       //@field A type ID for this database
    DWORD    dwNumRecords;      //@field Number of records in the database
    DWORD    dwSize;            //@field Size in bytes that this database is using
    FILETIME ftLastModified;    //@field Last time this database was modified
    SORTORDERSPECEX rgSortSpecs[CEDB_MAXSORTORDER];  //@field Actual sort order descriptions. 
                                // Only first wNumSortOrder of this array are valid.
} CEDBASEINFOEX, *PCEDBASEINFOEX;


#define BY_HANDLE_DB_INFORMATION_VERSION 1
// @struct BY_HANDLE_DB_INFORMATION | Contains extended information about an open database
typedef struct _BY_HANDLE_DB_INFORMATION {
    WORD     wVersion;          //@field Version of this structure
    WORD     wReserved;         //Padding for DWORD alignment
    CEGUID   guidVol;           //@field GUID of parent volume
    CEOID    oidDbase;          //@field OID of database
    CEDBASEINFOEX infDatabase;  //@field Extended database information
} BY_HANDLE_DB_INFORMATION, *LPBY_HANDLE_DB_INFORMATION;


// flags for open database - use low word
#define CEDB_AUTOINCREMENT          0x00000001

#define CEDB_SEEK_CEOID             0x00000001
#define CEDB_SEEK_BEGINNING         0x00000002
#define CEDB_SEEK_END               0x00000004
#define CEDB_SEEK_CURRENT           0x00000008
#define CEDB_SEEK_VALUESMALLER      0x00000010
#define CEDB_SEEK_VALUEFIRSTEQUAL   0x00000020
#define CEDB_SEEK_VALUEGREATER      0x00000040
#define CEDB_SEEK_VALUENEXTEQUAL    0x00000080


typedef struct _CEBLOB {
    DWORD           dwCount;
    LPBYTE          lpb;
} CEBLOB, *PCEBLOB;


#define CEVT_I2       2
#define CEVT_UI2      18
#define CEVT_I4       3
#define CEVT_UI4      19
#define CEVT_FILETIME 64
#define CEVT_LPWSTR   31
#define CEVT_BLOB     65
#define CEVT_BOOL     11
#define CEVT_R8       5

// @union CEVALUNION | value types for a property
typedef union _CEVALUNION {
    short           iVal;     //@field CEVT_I2
    USHORT          uiVal;    //@field CEVT_UI2
    long            lVal;     //@field CEVT_I4
    ULONG           ulVal;    //@field CEVT_UI4
    FILETIME        filetime; //@field CEVT_FILETIME 
    LPWSTR          lpwstr;   //@field CEVT_LPWSTR - Ptr to null terminated string
    CEBLOB          blob;     //@field CEVT_BLOB - DWORD count, and Ptr to bytes
    BOOL            boolVal;  //@field CEVT_BOOL
    double          dblVal;   //@field CEVT_R8
} CEVALUNION, *PCEVALUNION;
 
// @struct CEPROPVAL | Contains a property value
// Don't define flags in low byte or high nibble
#define CEDB_PROPNOTFOUND 0x0100
#define CEDB_PROPDELETE   0x0200
typedef struct _CEPROPVAL {
    CEPROPID   propid;    //@field PropID of the value.
    WORD       wLenData;  //@field Private field - can be garbage on entry
    WORD       wFlags;    //@field Special flags for this property. Possible flags
                          //@flag CEDB_PROPNOTFOUND | Set by <f CeReadRecordProps> if property not found
                          //@flag CEDB_PROPDELETE | If passed to <f CeWriteRecordProps> it causes 
                          // this property to be deleted
    CEVALUNION val;       //@field Actual value for simple types, ptr for strings/blobs                        
} CEPROPVAL, *PCEPROPVAL;

// Max record length defines
// zero is a valid length so we cant have full 4196
#define CEDB_MAXDATABLOCKSIZE 4092
#define CEDB_MAXPROPDATASIZE  ((CEDB_MAXDATABLOCKSIZE*16)-1)
// max record size is bound only by the max logging space we want to consume
// this is not explicitly checked for - if you read too much data and cause the log
// page to overflow the call will fail.
#define CEDB_MAXRECORDSIZE (128*1024)

// Max number of records allowed in a single database.
#define CEDB_MAXNUMRECORDS 0xFFFF

// flags for ReadRecord
#define CEDB_ALLOWREALLOC  0x00000001

#define CREATE_SYSTEMGUID(pguid)  (memset((pguid), 0, sizeof(CEGUID)))
#define CREATE_INVALIDGUID(pguid) (memset((pguid), -1, sizeof(CEGUID)))

#define CHECK_SYSTEMGUID(pguid)   ! ((pguid)->Data1 | (pguid)->Data2 | (pguid)->Data3 | (pguid)->Data4)
#define CHECK_INVALIDGUID(pguid)  !~((pguid)->Data1 & (pguid)->Data2 & (pguid)->Data3 & (pguid)->Data4)

// Obsolete versions for backward compatibility
HANDLE CeFindFirstDatabase (DWORD dwClassID);
CEOID CeFindNextDatabase (HANDLE hEnum);
CEOID CeCreateDatabase (LPWSTR lpszname, DWORD dwClassID, WORD wNumSortOrder,
                        SORTORDERSPEC *rgSortSpecs);
CEOID CeCreateDatabaseEx (PCEGUID pguid, CEDBASEINFO *pInfo);
BOOL CeSetDatabaseInfo (CEOID oidDbase, CEDBASEINFO *pNewInfo);
BOOL CeSetDatabaseInfoEx (PCEGUID pguid, CEOID oidDbase, CEDBASEINFO *pNewInfo);
HANDLE CeOpenDatabase (PCEOID poid, LPWSTR lpszName, CEPROPID propid,
                       DWORD dwFlags, HWND hwndNotify);
HANDLE CeOpenDatabaseEx (PCEGUID pguid, PCEOID poid, LPWSTR lpszName,
                         CEPROPID propid, DWORD dwFlags, CENOTIFYREQUEST *pReq);
BOOL CeDeleteDatabase (CEOID oid);
CEOID CeReadRecordProps (HANDLE hDbase, DWORD dwFlags, LPWORD lpcPropID,
                         CEPROPID *rgPropID, LPBYTE *lplpBuffer,
                         LPDWORD lpcbBuffer);
CEOID CeSeekDatabase (HANDLE hDatabase, DWORD dwSeekType, DWORD dwValue,
                      LPDWORD lpdwIndex);

BOOL CeGetDBInformationByHandle (HANDLE hDbase, LPBY_HANDLE_DB_INFORMATION lpDBInfo);
HANDLE CeFindFirstDatabaseEx (PCEGUID pguid, DWORD dwClassID);
CEOID CeFindNextDatabaseEx (HANDLE hEnum, PCEGUID pguid);
CEOID CeCreateDatabaseEx2 (PCEGUID pguid, CEDBASEINFOEX *pInfo);
BOOL CeSetDatabaseInfoEx2 (PCEGUID pguid, CEOID oidDbase, CEDBASEINFOEX *pNewInfo);
HANDLE CeOpenDatabaseEx2 (PCEGUID pguid, PCEOID poid, LPWSTR lpszName,
                          SORTORDERSPECEX* pSort, DWORD dwFlags,
                          CENOTIFYREQUEST *pReq);
BOOL CeDeleteDatabaseEx (PCEGUID pguid, CEOID oid);
CEOID CeSeekDatabaseEx (HANDLE hDatabase, DWORD dwSeekType, DWORD dwValue,
                        WORD wNumVals, LPDWORD lpdwIndex);
BOOL CeDeleteRecord (HANDLE hDatabase, CEOID oidRecord);
CEOID CeReadRecordPropsEx (HANDLE hDbase, DWORD dwFlags, LPWORD lpcPropID,
                           CEPROPID *rgPropID, LPBYTE *lplpBuffer, 
                           LPDWORD lpcbBuffer, HANDLE hHeap);
CEOID CeWriteRecordProps (HANDLE hDbase, CEOID oidRecord, WORD cPropID,
                          CEPROPVAL *rgPropVal);

BOOL CeMountDBVol(PCEGUID pguid, LPWSTR lpszVol, DWORD dwFlags);
BOOL CeUnmountDBVol(PCEGUID pguid);
BOOL CeFlushDBVol(PCEGUID pguid);
BOOL CeEnumDBVolumes(PCEGUID pguid, LPWSTR lpBuf, DWORD dwSize);
BOOL CeFreeNotification(PCENOTIFYREQUEST pRequest, PCENOTIFICATION pNotify);

// @CESYSGEN ENDIF


// @CESYSGEN IF FILESYS_FSMAIN

/*
@struct CEOIDINFO | Contains information about a WINCE object
@field WORD | wObjType | Type of object
   @flag   OBJTYPE_INVALID   | There was no valid object with this CEOID
   @flag   OBJTYPE_FILE      | The object is a file
   @flag   OBJTYPE_DIRECTORY | The object is a directory
   @flag   OBJTYPE_DATABASE  | The object is a database
   @flag   OBJTYPE_RECORD    | The object is a record inside a database
@field <lt>SeeBelow<gt> | <lt>CEOIDINFOUNIONref<gt> | Note: The remaining members form a union
@field CEFILEINFO   | infFile      | Valid for file objects
@field CEDIRINFO    | infDirectory | Valid for directory objects
@field CEDBASEINFO  | infDatabase  | Valid for database objects
@field CERECORDINFO | infRecord    | Valid for record objects
@xref   <t CEFILEINFO>  <t CEDIRINFO> <t CEDBASEINFO>  <t CERECORDINFO>
*/
#define OBJTYPE_INVALID     0
#define OBJTYPE_FILE        1
#define OBJTYPE_DIRECTORY   2
#define OBJTYPE_DATABASE    3
#define OBJTYPE_RECORD      4

typedef struct _CEOIDINFO {
    WORD  wObjType;     //Type of object
            //        OBJTYPE_INVALID   | There was no valid object with this CEOID
            //        OBJTYPE_FILE      | The object is a file
            //        OBJTYPE_DIRECTORY | The object is a directory
            //        OBJTYPE_DATABASE  | The object is a database
            //        OBJTYPE_RECORD    | The object is a record inside a database
    WORD   wPad;        // dword alignment            
    union {             //This is a union 
        CEFILEINFO  infFile;           //Valid for file objects
        CEDIRINFO   infDirectory;      //Valid for directory objects
// @CESYSGEN IF FILESYS_FSDBASE
        CEDBASEINFO infDatabase;       //Valid for database objects
        CERECORDINFO infRecord;        //Valid for record objects
// @CESYSGEN ENDIF
    };
} CEOIDINFO, PCEOIDINFO;

#define CEOIDINFOEX_VERSION 1
/*
@struct CEOIDINFOEX | Contains extended information about a WINCE object
@field WORD | wObjType | Type of object
   @flag   OBJTYPE_INVALID   | There was no valid object with this CEOID
   @flag   OBJTYPE_FILE      | The object is a file
   @flag   OBJTYPE_DIRECTORY | The object is a directory
   @flag   OBJTYPE_DATABASE  | The object is a database
   @flag   OBJTYPE_RECORD    | The object is a record inside a database
@field <lt>SeeBelow<gt> | <lt>CEOIDINFOUNIONref<gt> | Note: The remaining members form a union
@field CEFILEINFO   | infFile      | Valid for file objects
@field CEDIRINFO    | infDirectory | Valid for directory objects
@field CEDBASEINFO  | infDatabase  | Valid for database objects
@field CERECORDINFO | infRecord    | Valid for record objects
@xref   <t CEFILEINFO>  <t CEDIRINFO> <t CEDBASEINFO>  <t CERECORDINFO>
*/
typedef struct _CEOIDINFOEX {
    WORD  wVersion;    //@field Version of this structure
    WORD  wObjType;    //@field Type of object
                //@flag OBJTYPE_INVALID   | There was no valid object with this CEOID
                //@flag OBJTYPE_FILE      | The object is a file
                //@flag OBJTYPE_DIRECTORY | The object is a directory
                //@flag OBJTYPE_DATABASE  | The object is a database
                //@flag OBJTYPE_RECORD    | The object is a record inside a database
    union {
        CEFILEINFO    infFile;       // Valid for file objects
        CEDIRINFO     infDirectory;  // Valid for directory objects
// @CESYSGEN IF FILESYS_FSDBASE
        CEDBASEINFOEX infDatabase;   // Valid for database objects
        CERECORDINFO  infRecord;     // Valid for record objects
// @CESYSGEN ENDIF
    };
} CEOIDINFOEX, PCEOIDINFOEX;

// Functions
BOOL CeOidGetInfoEx2 (PCEGUID pguid, CEOID oid, CEOIDINFOEX *oidInfo);
BOOL CeOidGetInfoEx (PCEGUID pguid, CEOID oid, CEOIDINFO *oidInfo);
BOOL CeOidGetInfo (CEOID oid, CEOIDINFO *oidInfo);

// @CESYSGEN ENDIF

#ifdef WINCEOEM
#include <pwindbas.h>   // internal defines 
#ifdef WINCEMACRO
#include <mwindbas.h>
#endif
#endif

// @CESYSGEN ENDIF

#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -