mirror of https://github.com/UMSKT/xpmgr.git
244 lines
8.3 KiB
Plaintext
244 lines
8.3 KiB
Plaintext
//-----------------------------------------------------------------------------
|
|
// File: simpledata.idl
|
|
//
|
|
// Copyright: Copyright (c) Microsoft Corporation
|
|
//
|
|
// Contents: OLEDBSimpleProvider interface
|
|
//
|
|
// Comments:
|
|
//
|
|
//-----------------------------------------------------------------------------
|
|
|
|
cpp_quote("//=--------------------------------------------------------------------------=")
|
|
cpp_quote("// simpdata.h")
|
|
cpp_quote("//=--------------------------------------------------------------------------=")
|
|
cpp_quote("// (C) Copyright 1995-1996 Microsoft Corporation. All Rights Reserved.")
|
|
cpp_quote("//")
|
|
cpp_quote("// THIS CODE AND INFORMATION IS PROVIDED \"AS IS\" WITHOUT WARRANTY OF")
|
|
cpp_quote("// ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO")
|
|
cpp_quote("// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A")
|
|
cpp_quote("// PARTICULAR PURPOSE.")
|
|
cpp_quote("//=--------------------------------------------------------------------------=")
|
|
cpp_quote("")
|
|
cpp_quote("#pragma comment(lib,\"uuid.lib\")")
|
|
cpp_quote("")
|
|
cpp_quote("//--------------------------------------------------------------------------")
|
|
cpp_quote("// OLE DB Simple Provider Toolkit")
|
|
cpp_quote("")
|
|
cpp_quote("#ifndef SIMPDATA_H")
|
|
cpp_quote("#define SIMPDATA_H")
|
|
|
|
import "oaidl.idl";
|
|
|
|
|
|
cpp_quote("")
|
|
cpp_quote("#ifdef _WIN64")
|
|
cpp_quote("")
|
|
#if defined(_WIN64)
|
|
typedef LONGLONG DBROWCOUNT;
|
|
typedef LONGLONG DB_LORDINAL;
|
|
#else
|
|
cpp_quote("typedef LONGLONG DBROWCOUNT;")
|
|
cpp_quote("")
|
|
cpp_quote("typedef LONGLONG DB_LORDINAL;")
|
|
cpp_quote("")
|
|
#endif
|
|
cpp_quote("")
|
|
cpp_quote("#else")
|
|
cpp_quote("")
|
|
#if defined(_WIN64)
|
|
cpp_quote("typedef LONG DBROWCOUNT;")
|
|
cpp_quote("")
|
|
cpp_quote("typedef LONG DB_LORDINAL;")
|
|
cpp_quote("")
|
|
#else
|
|
typedef LONG DBROWCOUNT;
|
|
typedef LONG DB_LORDINAL;
|
|
#endif
|
|
cpp_quote("#endif // _WIN64")
|
|
|
|
// We use signed integers for row and column numbers, starting with the value 1.
|
|
// The value 0 refers to any "label" or "header" information, distinct from the
|
|
// data. The value -1 refers to any an unknown value, or all values, so, for
|
|
// example, iRow = -1, iCol = 2 refers to all of column 2
|
|
|
|
cpp_quote("#define OSP_IndexLabel (0)")
|
|
cpp_quote("#define OSP_IndexAll (~0)")
|
|
cpp_quote("#define OSP_IndexUnknown (~0)")
|
|
cpp_quote("")
|
|
|
|
[
|
|
uuid(E0E270C2-C0BE-11d0-8FE4-00A0C90A6341),
|
|
helpstring("Microsoft OLE DB Simple Provider 1.5 Library"),
|
|
lcid(0x409),
|
|
version(1.5)
|
|
]
|
|
library MSDAOSP
|
|
{
|
|
//=--------------------------------------------------------------------------=
|
|
// Standard imports
|
|
//=--------------------------------------------------------------------------=
|
|
importlib("STDOLE2.TLB");
|
|
|
|
|
|
typedef enum OSPFORMAT
|
|
{
|
|
OSPFORMAT_RAW = 0, // set/get variant as is
|
|
OSPFORMAT_DEFAULT = 0, // default is RAW
|
|
OSPFORMAT_FORMATTED = 1, // all variants converted to string representation
|
|
OSPFORMAT_HTML = 2 // variant converted to HTML string representation
|
|
// (providers not required to implement this).
|
|
} OSPFORMAT;
|
|
|
|
typedef enum OSPRW
|
|
{
|
|
// All cells are presumed to be readable.
|
|
OSPRW_DEFAULT = 1,
|
|
OSPRW_READONLY = 0, // readonly
|
|
OSPRW_READWRITE = 1, // readwrite
|
|
OSPRW_MIXED = 2 // mixed or unknown; most callers will treat
|
|
// as READWRITE "Lazy" provider should just
|
|
// return OSPRW_MIXED
|
|
} OSPRW;
|
|
|
|
typedef enum OSPFIND
|
|
{
|
|
OSPFIND_DEFAULT = 0,
|
|
OSPFIND_UP = 1, // scan backwards(decreasing row #s)
|
|
OSPFIND_CASESENSITIVE = 2,
|
|
OSPFIND_UPCASESENSITIVE = 3 // combine 1 and 2
|
|
} OSPFIND;
|
|
|
|
typedef enum OSPCOMP
|
|
{
|
|
// These values derived from bitmasks
|
|
// i.e. GT LT EQ
|
|
OSPCOMP_EQ = 1, // OSPCOMP_EQ 1 Equal
|
|
OSPCOMP_DEFAULT = 1, // OSPCOMP_EQ is the default
|
|
OSPCOMP_LT = 2, // OSPCOMP_LT 1 0 Less than
|
|
OSPCOMP_LE = 3, // OSPCOMP_LE 1 1 Less than or equal
|
|
OSPCOMP_GE = 4, // OSPCOMP_GT 1 0 0 Greater than or equal
|
|
OSPCOMP_GT = 5, // OSPCOMP_GE 1 0 1 Greater than
|
|
OSPCOMP_NE = 6, // OSPCOMP_NE 1 1 0 Not equal
|
|
} OSPCOMP;
|
|
|
|
typedef enum OSPXFER
|
|
{
|
|
OSPXFER_COMPLETE = 0,
|
|
OSPXFER_ABORT = 1,
|
|
OSPXFER_ERROR = 2
|
|
} OSPXFER;
|
|
|
|
[
|
|
object,
|
|
uuid(E0E270C1-C0BE-11d0-8FE4-00A0C90A6341),
|
|
pointer_default(unique),
|
|
oleautomation,
|
|
version(1.4)
|
|
]
|
|
interface OLEDBSimpleProviderListener : IUnknown
|
|
{
|
|
// As noted above; a -1 (STD_IndexAll) can be used in the row or column
|
|
// (or both). For example, CellChanged(STD_IndexAll, OSP_IndexAll)
|
|
// implies that all rows and columns changed shape.
|
|
|
|
HRESULT aboutToChangeCell([in] DBROWCOUNT iRow, [in] DB_LORDINAL iColumn);
|
|
HRESULT cellChanged([in] DBROWCOUNT iRow, [in] DB_LORDINAL iColumn);
|
|
HRESULT aboutToDeleteRows([in] DBROWCOUNT iRow, [in] DBROWCOUNT cRows);
|
|
HRESULT deletedRows([in] DBROWCOUNT iRow, [in] DBROWCOUNT cRows);
|
|
HRESULT aboutToInsertRows([in] DBROWCOUNT iRow, [in] DBROWCOUNT cRows);
|
|
HRESULT insertedRows([in] DBROWCOUNT iRow, [in] DBROWCOUNT cRows);
|
|
HRESULT rowsAvailable([in] DBROWCOUNT iRow, [in] DBROWCOUNT cRows);
|
|
HRESULT transferComplete([in] OSPXFER xfer);
|
|
}
|
|
|
|
[
|
|
object,
|
|
uuid(E0E270C0-C0BE-11d0-8FE4-00A0C90A6341),
|
|
pointer_default(unique),
|
|
oleautomation,
|
|
version(1.4)
|
|
]
|
|
interface OLEDBSimpleProvider : IUnknown
|
|
{
|
|
// Info-retrieving functions:
|
|
// ==========================
|
|
//
|
|
// Note that column names are retrieved using GetString or GetVariant
|
|
// with iRow == OSP_IndexLabel. RWStatus for a whole row or column
|
|
// can be made with iRow or iColumn == OSP_IndexAll.
|
|
|
|
HRESULT getRowCount([out,retval] DBROWCOUNT *pcRows);
|
|
HRESULT getColumnCount([out,retval] DB_LORDINAL *pcColumns);
|
|
|
|
|
|
HRESULT getRWStatus([in] DBROWCOUNT iRow, [in] DB_LORDINAL iColumn,
|
|
[out, retval] OSPRW *prwStatus);
|
|
|
|
// Variant-oriented Get/Set:
|
|
// =========================
|
|
//
|
|
// Note that use of VARIANT precludes references.
|
|
|
|
HRESULT getVariant([in] DBROWCOUNT iRow, [in] DB_LORDINAL iColumn,
|
|
[in] OSPFORMAT format, [out, retval] VARIANT *pVar );
|
|
HRESULT setVariant([in] DBROWCOUNT iRow, [in] DB_LORDINAL iColumn,
|
|
[in] OSPFORMAT format, [in] VARIANT Var );
|
|
|
|
// Locale information:
|
|
// ===================
|
|
//
|
|
|
|
HRESULT getLocale([out,retval] BSTR *pbstrLocale);
|
|
|
|
// Deletion and Insertion:
|
|
// =======================
|
|
//
|
|
// For insertion, iRow or iColumn is index *before* which to insert; the
|
|
// first inserted row or column will end up with that index.
|
|
//
|
|
// In case of error, provider may choose to insert or delete only the
|
|
// first m of n rows or columns which client requested. OUT parameter
|
|
// indicates how many rows or columns actually inserted or deleted. In
|
|
// case of success, OUT parameter should be filled in with cRows.
|
|
|
|
HRESULT deleteRows([in] DBROWCOUNT iRow, [in] DBROWCOUNT cRows,
|
|
[out, retval] DBROWCOUNT *pcRowsDeleted );
|
|
HRESULT insertRows([in] DBROWCOUNT iRow, [in] DBROWCOUNT cRows,
|
|
[out, retval] DBROWCOUNT *pcRowsInserted );
|
|
|
|
// Find
|
|
// Find the first row in column iColumn that contains a value which
|
|
// matches val according to the compType.
|
|
// To continue searching past the found row, the caller should pass
|
|
// *piRowFound+1 as the next iRowStart, or *piRowFound-1 for backward
|
|
// searches (STDFIND_UP).
|
|
|
|
HRESULT find([in] DBROWCOUNT iRowStart, [in] DB_LORDINAL iColumn,
|
|
[in] VARIANT val,
|
|
[in] OSPFIND findFlags,
|
|
[in] OSPCOMP compType,
|
|
[out, retval] DBROWCOUNT *piRowFound );
|
|
|
|
// Establish or detach single event sink.
|
|
|
|
HRESULT addOLEDBSimpleProviderListener([in] OLEDBSimpleProviderListener *pospIListener);
|
|
HRESULT removeOLEDBSimpleProviderListener([in] OLEDBSimpleProviderListener *pospIListener);
|
|
|
|
// Asynch support
|
|
|
|
HRESULT isAsync([out, retval] bool *pbAsynch);
|
|
|
|
HRESULT getEstimatedRows([out, retval] DBROWCOUNT *piRows);
|
|
|
|
// Stops any asynchronous download that may be in progress.
|
|
HRESULT stopTransfer();
|
|
}
|
|
|
|
cpp_quote("typedef OLEDBSimpleProvider *LPOLEDBSimpleProvider;")
|
|
|
|
}
|
|
|
|
cpp_quote("#endif")
|
|
|