1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
|
/************************************************************************
** D A O G E T R W . H *
** *
** GetRows interface *
** *
** Warning: The interface defined in this file is for internal use by *
** the Microsoft Foundation Classes and the dbdao C++ classes. *
** Future releases of DAO may not be completely compatible with this *
** implementation. However, if you write to the MFC or dbdao *
** classes that use this interface, those classes will continue to *
** be compatible even if this underlying interface changes. *
** *
*************************************************************************
** Copyright (C) 1995 by Microsoft Corporation *
** All Rights Reserved *
************************************************************************/
#if !defined (_DAOGETRW_H_)
#define _DAOGETRW_H_
/*
Enumerations
*/
typedef enum
{
DAOCOLKIND_IND = 0,
DAOCOLKIND_STR,
DAOCOLKIND_WSTR
} DAOCOLKIND;
typedef enum
{
DAO_I2 = 0,
DAO_I4,
DAO_R4,
DAO_R8,
DAO_CURRENCY,
DAO_DATE,
DAO_BOOL,
DAO_BSTR,
DAO_LPSTR,
DAO_LPWSTR,
DAO_BLOB,
DAO_BYTES,
DAO_CHAR,
DAO_WCHAR,
DAO_ANYVARIANT,
DAO_BOOKMARK,
DAO_BYTE,
DAO_GUID,
DAO_DATATYPEMAX
} DAODATATYPE;
/*
Macros
*/
#define DAO_NOINDICATOR 0xffffffff
#define DAO_NULL 0xffffffff
#define DAO_CANTCOERCE 0xfffffffc
#define DAO_NOMAXLENGTH 0x00000000
#define DAOROWFETCH_CALLEEALLOCATES 0x00000001
#define DAOROWFETCH_DONTADVANCE 0x00000002
#define DAOROWFETCH_FORCEREFRESH 0x00000004
#define DAOROWFETCH_BINDABSOLUTE 0x00000008
#define DAOBINDING_DIRECT 0x00000001
#define DAOBINDING_VARIANT 0x00000002
#define DAOBINDING_CALLBACK 0x00000004
/*
Structures
*/
typedef struct
{
DWORD dwKind;
union
{
LONG ind;
LPCSTR lpstr;
LPCWSTR lpwstr;
};
} DAOCOLUMNID;
typedef DAOCOLUMNID *LPDAOCOLUMNID;
// Callback for binding
EXTERN_C typedef HRESULT (STDAPICALLTYPE *LPDAOBINDFUNC)(ULONG cb, DWORD dwUser, LPVOID *ppData);
#define DAOBINDINGFUNC(f) STDAPI f (ULONG cb, DWORD dwUser, LPVOID *ppData)
typedef struct
{
DAOCOLUMNID columnID;
ULONG cbDataOffset;
ULONG cbMaxLen;
ULONG cbInfoOffset;
DWORD dwBinding;
DWORD dwDataType;
DWORD dwUser;
} DAOCOLUMNBINDING;
typedef DAOCOLUMNBINDING *LPDAOCOLUMNBINDING;
typedef struct
{
ULONG cRowsRequested;
DWORD dwFlags;
LPVOID pData;
LPVOID pVarData;
ULONG cbVarData;
ULONG cRowsReturned;
} DAOFETCHROWS;
typedef DAOFETCHROWS *LPDAOFETCHROWS;
/*
New Errors
**NOTE: OLE standard ids to be determined.
*/
#define GETROWSUCCESS(x) MAKE_SCODE(SEVERITY_SUCCESS, FACILITY_ITF, x)
#define GETROWERR(x) MAKE_SCODE(SEVERITY_ERROR, FACILITY_ITF, x)
#define S_BUFFERTOOSMALL GETROWSUCCESS(0x1000)
#define S_ENDOFCURSOR GETROWSUCCESS(0x1001)
#define S_SILENTCANCEL GETROWSUCCESS(0x1002)
#define S_RECORDDELETED GETROWSUCCESS(0x1003)
#define E_ROWTOOSHORT GETROWERR(0x1000)
#define E_BADBINDINFO GETROWERR(0x1001)
#define E_COLUMNUNAVAILABLE GETROWERR(0x1002)
/*
Interfaces
*/
#undef INTERFACE
#define INTERFACE ICDAORecordset
DECLARE_INTERFACE_(ICDAORecordset, IDispatch)
{
STDMETHOD(GetRows) (THIS_ LONG cRowsToSkip, LONG cCol, LPDAOCOLUMNBINDING prgBndCol, ULONG cbRowLen, LPDAOFETCHROWS pFetchRows) PURE;
};
#endif // _DAOGETRW_H_
|