Icrsint.h
上传用户:dzyhzl
上传日期:2019-04-29
资源大小:56270k
文件大小:4k
- //-----------------------------------------------------------------------------
- // File: icrsint.h
- //
- // Copyright: Copyright (c) Microsoft Corporation
- //
- // Contents: ADO C/C++ Record Binding Definitions
- //
- // Comments:
- //
- //-----------------------------------------------------------------------------
- #ifndef _ICRSINT_H_
- #define _ICRSINT_H_
- #include <olectl.h>
- #include <stddef.h>
- // forwards
- class CADORecordBinding;
- #define classoffset(base, derived) ((DWORD_PTR)(static_cast<base*>((derived*)8))-8)
- enum ADOFieldStatusEnum
- {
- adFldOK = 0,
- adFldBadAccessor = 1,
- adFldCantConvertValue = 2,
- adFldNull = 3,
- adFldTruncated = 4,
- adFldSignMismatch = 5,
- adFldDataOverFlow = 6,
- adFldCantCreate = 7,
- adFldUnavailable = 8,
- adFldPermissionDenied = 9,
- adFldIntegrityViolation = 10,
- adFldSchemaViolation = 11,
- adFldBadStatus = 12,
- adFldDefault = 13
- };
- typedef struct stADO_BINDING_ENTRY
- {
- ULONG_PTR ulOrdinal;
- WORD wDataType;
- BYTE bPrecision;
- BYTE bScale;
- ULONG_PTR ulSize;
- ULONG_PTR ulBufferOffset;
- ULONG_PTR ulStatusOffset;
- ULONG_PTR ulLengthOffset;
- ULONG_PTR ulADORecordBindingOffSet;
- BOOL fModify;
- } ADO_BINDING_ENTRY;
- #define BEGIN_ADO_BINDING(cls) public:
- typedef cls ADORowClass;
- const ADO_BINDING_ENTRY* STDMETHODCALLTYPE GetADOBindingEntries() {
- static const ADO_BINDING_ENTRY rgADOBindingEntries[] = {
- //
- // Fixed length non-numeric data
- //
- #define ADO_FIXED_LENGTH_ENTRY(Ordinal, DataType, Buffer, Status, Modify)
- {Ordinal,
- DataType,
- 0,
- 0,
- 0,
- offsetof(ADORowClass, Buffer),
- offsetof(ADORowClass, Status),
- 0,
- classoffset(CADORecordBinding, ADORowClass),
- Modify},
- #define ADO_FIXED_LENGTH_ENTRY2(Ordinal, DataType, Buffer, Modify)
- {Ordinal,
- DataType,
- 0,
- 0,
- 0,
- offsetof(ADORowClass, Buffer),
- 0,
- 0,
- classoffset(CADORecordBinding, ADORowClass),
- Modify},
- //
- // Numeric data
- //
- #define ADO_NUMERIC_ENTRY(Ordinal, DataType, Buffer, Precision, Scale, Status, Modify)
- {Ordinal,
- DataType,
- Precision,
- Scale,
- 0,
- offsetof(ADORowClass, Buffer),
- offsetof(ADORowClass, Status),
- 0,
- classoffset(CADORecordBinding, ADORowClass),
- Modify},
- #define ADO_NUMERIC_ENTRY2(Ordinal, DataType, Buffer, Precision, Scale, Modify)
- {Ordinal,
- DataType,
- Precision,
- Scale,
- 0,
- offsetof(ADORowClass, Buffer),
- 0,
- 0,
- classoffset(CADORecordBinding, ADORowClass),
- Modify},
- //
- // Variable length data
- //
- #define ADO_VARIABLE_LENGTH_ENTRY(Ordinal, DataType, Buffer, Size, Status, Length, Modify)
- {Ordinal,
- DataType,
- 0,
- 0,
- Size,
- offsetof(ADORowClass, Buffer),
- offsetof(ADORowClass, Status),
- offsetof(ADORowClass, Length),
- classoffset(CADORecordBinding, ADORowClass),
- Modify},
- #define ADO_VARIABLE_LENGTH_ENTRY2(Ordinal, DataType, Buffer, Size, Status, Modify)
- {Ordinal,
- DataType,
- 0,
- 0,
- Size,
- offsetof(ADORowClass, Buffer),
- offsetof(ADORowClass, Status),
- 0,
- classoffset(CADORecordBinding, ADORowClass),
- Modify},
- #define ADO_VARIABLE_LENGTH_ENTRY3(Ordinal, DataType, Buffer, Size, Length, Modify)
- {Ordinal,
- DataType,
- 0,
- 0,
- Size,
- offsetof(ADORowClass, Buffer),
- 0,
- offsetof(ADORowClass, Length),
- classoffset(CADORecordBinding, ADORowClass),
- Modify},
- #define ADO_VARIABLE_LENGTH_ENTRY4(Ordinal, DataType, Buffer, Size, Modify)
- {Ordinal,
- DataType,
- 0,
- 0,
- Size,
- offsetof(ADORowClass, Buffer),
- 0,
- 0,
- classoffset(CADORecordBinding, ADORowClass),
- Modify},
- #define END_ADO_BINDING() {0, adEmpty, 0, 0, 0, 0, 0, 0, 0, FALSE}};
- return rgADOBindingEntries;}
- //
- // Interface that the client 'record' class needs to support. The ADO Binding entries
- // provide the implementation for this interface.
- //
- class CADORecordBinding
- {
- public:
- STDMETHOD_(const ADO_BINDING_ENTRY*, GetADOBindingEntries) (VOID) PURE;
- };
- //
- // Interface that allows a client to fetch a record of data into class data members.
- //
- struct __declspec(uuid("00000544-0000-0010-8000-00aa006d2ea4")) IADORecordBinding;
- DECLARE_INTERFACE_(IADORecordBinding, IUnknown)
- {
- public:
- STDMETHOD(BindToRecordset) (CADORecordBinding *pAdoRecordBinding) PURE;
- STDMETHOD(AddNew) (CADORecordBinding *pAdoRecordBinding) PURE;
- STDMETHOD(Update) (CADORecordBinding *pAdoRecordBinding) PURE;
- };
- #endif // !_ICRSINT_H_