home *** CD-ROM | disk | FTP | other *** search
/ Team Palmtops 7 / Palmtops_numero07.iso / WinCE / SDKWindowsCE / AutoPC / apcsdk10.exe / data1.cab / Emulation_Include_Files / windbase.h < prev    next >
Encoding:
C/C++ Source or Header  |  1999-05-13  |  9.3 KB  |  272 lines

  1. /**
  2.  
  3.  Copyright (c) 1995, Microsoft Corporation
  4.  
  5.  Module: windbase.h
  6.  
  7.  Purpose: Master include file for WINCE Database APIs
  8.  
  9. **/
  10.  
  11. #ifndef __WINDBASE__
  12. #define __WINDBASE__
  13.  
  14. // @CESYSGEN IF CE_MODULES_FILESYS
  15.  
  16. typedef DWORD CEOID;
  17. typedef CEOID *PCEOID;
  18.  
  19. // @CESYSGEN IF FILESYS_FSMAIN
  20.  
  21. typedef struct _CEFILEINFO {
  22.     DWORD   dwAttributes;
  23.     CEOID     oidParent;
  24.     WCHAR szFileName[MAX_PATH];
  25.     FILETIME ftLastChanged;
  26.     DWORD   dwLength;
  27. } CEFILEINFO;
  28.  
  29. typedef struct _CEDIRINFO {
  30.     DWORD   dwAttributes;
  31.     CEOID  oidParent;
  32.     WCHAR   szDirName[MAX_PATH];
  33. } CEDIRINFO;
  34.  
  35. #define DB_CEOID_CREATED    (WM_USER + 0x1)
  36. #define DB_CEOID_DATABASE_DELETED    (WM_USER + 0x2)
  37. #define DB_CEOID_RECORD_DELETED    (WM_USER + 0x3)
  38. #define DB_CEOID_FILE_DELETED    (WM_USER + 0x4)
  39. #define DB_CEOID_DIRECTORY_DELETED    (WM_USER + 0x5)
  40. #define DB_CEOID_CHANGED    (WM_USER + 0x6)
  41.  
  42. // flags for CeGetReplChangeMask
  43. #define REPL_CHANGE_WILLCLEAR    0x00000001
  44.  
  45. typedef struct STORE_INFORMATION {
  46.     DWORD dwStoreSize;
  47.     DWORD dwFreeSize;
  48. } STORE_INFORMATION, *LPSTORE_INFORMATION;
  49.  
  50. BOOL GetStoreInformation (LPSTORE_INFORMATION lpsi);
  51.  
  52. // @CESYSGEN ENDIF
  53.  
  54.  
  55. // @CESYSGEN IF FILESYS_FSDBASE
  56.  
  57. typedef DWORD CEPROPID;
  58. typedef CEPROPID *PCEPROPID;
  59. #define TypeFromPropID(propid) LOWORD(propid)
  60.  
  61. typedef struct _CERECORDINFO {
  62.     CEOID  oidParent;
  63. } CERECORDINFO;
  64.  
  65. #define CEDB_SORT_DESCENDING         0x00000001
  66. #define CEDB_SORT_CASEINSENSITIVE    0x00000002
  67. #define CEDB_SORT_UNKNOWNFIRST       0x00000004
  68. #define CEDB_SORT_GENERICORDER       0x00000008  // internally used for generic ordering
  69. typedef struct _SORTORDERSPEC {
  70.     CEPROPID  propid;
  71.     DWORD   dwFlags;
  72. } SORTORDERSPEC;
  73.  
  74. #define CEDB_MAXDBASENAMELEN 32
  75. #define CEDB_MAXSORTORDER   4
  76.  
  77. // values for flag
  78. #define CEDB_VALIDNAME     0x0001
  79. #define CEDB_VALIDTYPE     0x0002
  80. #define CEDB_VALIDSORTSPEC 0x0004
  81. #define CEDB_VALIDMODTIME    0x0008
  82.  
  83. typedef struct _CEDBASEINFO {
  84.     DWORD   dwFlags;
  85.     WCHAR   szDbaseName[CEDB_MAXDBASENAMELEN];
  86.     DWORD   dwDbaseType;
  87.     WORD    wNumRecords;
  88.     WORD    wNumSortOrder;
  89.     DWORD    dwSize;
  90.     FILETIME ftLastModified;
  91.     SORTORDERSPEC rgSortSpecs[CEDB_MAXSORTORDER];
  92. } CEDBASEINFO;
  93.  
  94.  
  95. // flags for open database - use low word
  96. #define CEDB_AUTOINCREMENT     0x00000001
  97.  
  98. #define CEDB_SEEK_CEOID       0x00000001
  99. #define CEDB_SEEK_BEGINNING    0x00000002
  100. #define CEDB_SEEK_END          0x00000004
  101. #define CEDB_SEEK_CURRENT      0x00000008
  102. #define CEDB_SEEK_VALUESMALLER     0x00000010
  103. #define CEDB_SEEK_VALUEFIRSTEQUAL  0x00000020
  104. #define CEDB_SEEK_VALUEGREATER     0x00000040
  105. #define CEDB_SEEK_VALUENEXTEQUAL   0x00000080
  106.  
  107.  
  108. typedef struct _CEBLOB {
  109.     DWORD           dwCount;
  110.     LPBYTE          lpb;
  111. } CEBLOB;
  112.  
  113. #define CEVT_I2       2
  114. #define CEVT_UI2      18
  115. #define CEVT_I4       3
  116. #define CEVT_UI4      19
  117. #define CEVT_FILETIME 64
  118. #define CEVT_LPWSTR   31
  119. #define CEVT_BLOB     65
  120.  
  121. typedef union _CEVALUNION {
  122.     short           iVal;
  123.     USHORT          uiVal;
  124.     long            lVal;
  125.     ULONG           ulVal;
  126.     FILETIME        filetime;
  127.     LPWSTR          lpwstr;
  128.     CEBLOB         blob;
  129. } CEVALUNION;
  130.  
  131. // dont define flags in low byte
  132. #define CEDB_PROPNOTFOUND 0x0100
  133. #define CEDB_PROPDELETE   0x0200
  134. typedef struct _CEPROPVAL {
  135.     CEPROPID   propid;
  136.     WORD        wLenData;
  137.     WORD        wFlags;
  138.     CEVALUNION val;
  139. } CEPROPVAL;
  140. typedef CEPROPVAL *PCEPROPVAL;
  141.  
  142. // Max record length defines
  143. // zero is a valid length so we cant have full 4196
  144. #define CEDB_MAXDATABLOCKSIZE 4092
  145. #define CEDB_MAXPROPDATASIZE  ((CEDB_MAXDATABLOCKSIZE*16)-1)
  146. // max record size is bound only by the max logging space we want to consume
  147. // this is not explicitly checked for - if you read too much data and cause the log
  148. // page to overflow the call will fail.
  149. #define CEDB_MAXRECORDSIZE  (128*1024)
  150.  
  151. // flags for ReadRecord
  152. #define CEDB_ALLOWREALLOC  0x00000001
  153.  
  154. HANDLE CeFindFirstDatabase (DWORD dwClassID);
  155. CEOID CeFindNextDatabase (HANDLE hEnum);
  156. CEOID CeCreateDatabase (LPWSTR lpszname, DWORD dwClassID, WORD wNumSortOrder, SORTORDERSPEC *rgSortSpecs);
  157. BOOL CeSetDatabaseInfo (CEOID oidDbase, CEDBASEINFO *pNewInfo);
  158. HANDLE CeOpenDatabase (PCEOID poid, LPWSTR lpszName, CEPROPID propid, DWORD dwFlags, HWND hwndNotify);
  159. BOOL CeDeleteDatabase (CEOID oid);
  160. CEOID CeSeekDatabase (HANDLE hDatabase, DWORD dwSeekType, DWORD dwValue, LPDWORD lpdwIndex);
  161. BOOL CeDeleteRecord (HANDLE hDatabase, CEOID oidRecord);
  162. CEOID CeReadRecordProps (HANDLE hDbase, DWORD dwFlags, LPWORD lpcPropID, CEPROPID *rgPropID, LPBYTE *lplpBuffer, LPDWORD lpcbBuffer);
  163. CEOID CeWriteRecordProps (HANDLE hDbase, CEOID oidRecord, WORD cPropID, CEPROPVAL *rgPropVal);
  164.  
  165. // @CESYSGEN ENDIF
  166.  
  167.  
  168. // @CESYSGEN IF FILESYS_FSMAIN
  169.  
  170. #define OBJTYPE_INVALID     0
  171. #define OBJTYPE_FILE        1
  172. #define OBJTYPE_DIRECTORY   2
  173. #define OBJTYPE_DATABASE    3
  174. #define OBJTYPE_RECORD      4
  175.  
  176. typedef struct _CEOIDINFO {
  177.     WORD  wObjType;             //Type of object
  178.             //        OBJTYPE_INVALID   | There was no valid object with this CEOID
  179.             //        OBJTYPE_FILE      | The object is a file
  180.             //        OBJTYPE_DIRECTORY | The object is a directory
  181.             //        OBJTYPE_DATABASE  | The object is a database
  182.             //        OBJTYPE_RECORD    | The object is a record inside a database
  183.     WORD   wPad;    // dword alignment            
  184.     union {     //This is a union 
  185.         CEFILEINFO  infFile;           //Valid for file objects
  186.         CEDIRINFO   infDirectory;      //Valid for directory objects
  187. // @CESYSGEN IF FILESYS_FSDBASE
  188.         CEDBASEINFO infDatabase;       //Valid for database objects
  189.         CERECORDINFO infRecord;        //Valid for record objects
  190. // @CESYSGEN ENDIF
  191.     };
  192. } CEOIDINFO;
  193.  
  194. // Functions
  195. BOOL CeOidGetInfo (CEOID oid, CEOIDINFO *oidInfo);
  196.  
  197. // @CESYSGEN ENDIF
  198.  
  199. #ifdef WINCEOEM
  200. #include <pwindbas.h>    // internal defines 
  201. #ifdef WINCEMACRO
  202. #include <mwindbas.h>
  203. #endif
  204. #endif
  205.  
  206. // @CESYSGEN ENDIF
  207.  
  208. // Rename CE Ver 1.0 names for backwards compatibility
  209.  
  210. #define DB_PEGOID_CREATED              DB_CEOID_CREATED
  211. #define DB_PEGOID_RECORD_DELETED       DB_CEOID_RECORD_DELETED
  212. #define DB_PEGOID_CHANGED           DB_CEOID_CHANGED
  213. #define PEGPROPID                      CEPROPID
  214. #define PPEGPROPID                     PCEPROPID
  215. #define PEGOID                         CEOID
  216. #define PPEGOID                        PCEOID
  217. #define PEGFILEINFO                    CEFILEINFO
  218. #define PEGDIRINFO                     CEDIRINFO
  219. #define PEGRECORDINFO                  CERECORDINFO
  220. #define PEGDB_SORT_DESCENDING          CEDB_SORT_DESCENDING
  221. #define PEGDB_SORT_CASEINSENSITIVE     CEDB_SORT_CASEINSENSITIVE
  222. #define PEGDB_SORT_UNKNOWNFIRST        CEDB_SORT_UNKNOWNFIRST
  223. #define PEGDB_SORT_GENERICORDER        CEDB_SORT_GENERICORDER
  224. #define PEGDB_MAXDBASENAMELEN          CEDB_MAXDBASENAMELEN
  225. #define PEGDB_MAXSORTORDER             CEDB_MAXSORTORDER
  226. #define PEGDB_VALIDNAME                CEDB_VALIDNAME
  227. #define PEGDB_VALIDTYPE                CEDB_VALIDTYPE
  228. #define PEGDB_VALIDSORTSPEC            CEDB_VALIDSORTSPEC
  229. #define PEGDB_VALIDMODTIME           CEDB_VALIDMODTIME
  230. #define PEGDBASEINFO                   CEDBASEINFO
  231. #define PEGOIDINFO                     CEOIDINFO
  232. #define PEGDB_AUTOINCREMENT            CEDB_AUTOINCREMENT
  233. #define PEGDB_SEEK_PEGOID              CEDB_SEEK_CEOID
  234. #define PEGDB_SEEK_BEGINNING           CEDB_SEEK_BEGINNING
  235. #define PEGDB_SEEK_END                 CEDB_SEEK_END
  236. #define PEGDB_SEEK_CURRENT             CEDB_SEEK_CURRENT
  237. #define PEGDB_SEEK_VALUESMALLER        CEDB_SEEK_VALUESMALLER
  238. #define PEGDB_SEEK_VALUEFIRSTEQUAL     CEDB_SEEK_VALUEFIRSTEQUAL
  239. #define PEGDB_SEEK_VALUEGREATER        CEDB_SEEK_VALUEGREATER
  240. #define PEGDB_SEEK_VALUENEXTEQUAL      CEDB_SEEK_VALUENEXTEQUAL
  241. #define PEGBLOB                        CEBLOB
  242. #define PEGVT_I2                       CEVT_I2
  243. #define PEGVT_UI2                      CEVT_UI2
  244. #define PEGVT_I4                       CEVT_I4
  245. #define PEGVT_UI4                      CEVT_UI4
  246. #define PEGVT_FILETIME                 CEVT_FILETIME
  247. #define PEGVT_LPWSTR                   CEVT_LPWSTR
  248. #define PEGVT_BLOB                     CEVT_BLOB
  249. #define PEGVALUNION                    CEVALUNION
  250. #define PEGDB_PROPNOTFOUND             CEDB_PROPNOTFOUND
  251. #define PEGDB_PROPDELETE               CEDB_PROPDELETE
  252. #define PEGPROPVAL                     CEPROPVAL
  253. #define PPEGPROPVAL                    PCEPROPVAL
  254. #define PEGDB_MAXDATABLOCKSIZE         CEDB_MAXDATABLOCKSIZE
  255. #define PEGDB_MAXPROPDATASIZE          CEDB_MAXPROPDATASIZE
  256. #define PEGDB_MAXRECORDSIZE            CEDB_MAXRECORDSIZE
  257. #define PEGDB_ALLOWREALLOC             CEDB_ALLOWREALLOC
  258. #define PegOidGetInfo                  CeOidGetInfo
  259. #define PegFindFirstDatabase           CeFindFirstDatabase
  260. #define PegFindNextDatabase            CeFindNextDatabase
  261. #define PegCreateDatabase              CeCreateDatabase
  262. #define PegSetDatabaseInfo             CeSetDatabaseInfo
  263. #define PegOpenDatabase                CeOpenDatabase
  264. #define PegDeleteDatabase              CeDeleteDatabase
  265. #define PegSeekDatabase                CeSeekDatabase
  266. #define PegDeleteRecord                CeDeleteRecord
  267. #define PegReadRecordProps             CeReadRecordProps
  268. #define PegWriteRecordProps            CeWriteRecordProps
  269.  
  270. #endif
  271.  
  272.