123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762 |
- {******************************************************************************}
- { }
- { Indezing Service Query API interface Unit for Object Pascal }
- { }
- { Portions created by Microsoft are Copyright (C) 1995-2001 Microsoft }
- { Corporation. All Rights Reserved. }
- { }
- { The original file is: nyquery.h, released August 2001. The original Pascal }
- { code is: NtQuery.pas, released December 2000. The initial developer of the }
- { Pascal code is Marcel van Brakel (brakelm att chello dott nl). }
- { }
- { Portions created by Marcel van Brakel are Copyright (C) 1999-2001 }
- { Marcel van Brakel. All Rights Reserved. }
- { }
- { Obtained through: Joint Endeavour of Delphi Innovators (Project JEDI) }
- { }
- { You may retrieve the latest version of this file at the Project JEDI }
- { APILIB home page, located at http://jedi-apilib.sourceforge.net }
- { }
- { The contents of this file are used with permission, subject to the Mozilla }
- { Public License Version 1.1 (the "License"); you may not use this file except }
- { in compliance with the License. You may obtain a copy of the License at }
- { http://www.mozilla.org/MPL/MPL-1.1.html }
- { }
- { Software distributed under the License is distributed on an "AS IS" basis, }
- { WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for }
- { the specific language governing rights and limitations under the License. }
- { }
- { Alternatively, the contents of this file may be used under the terms of the }
- { GNU Lesser General Public License (the "LGPL License"), in which case the }
- { provisions of the LGPL License are applicable instead of those above. }
- { If you wish to allow use of your version of this file only under the terms }
- { of the LGPL License and not to allow others to use your version of this file }
- { under the MPL, indicate your decision by deleting the provisions above and }
- { replace them with the notice and other provisions required by the LGPL }
- { License. If you do not delete the provisions above, a recipient may use }
- { your version of this file under either the MPL or the LGPL License. }
- { }
- { For more information about the LGPL: http://www.gnu.org/copyleft/lesser.html }
- { }
- {******************************************************************************}
- // $Id: JwaNtQuery.pas,v 1.11 2005/09/06 16:36:50 marquardt Exp $
- unit JwaNtQuery;
- {$WEAKPACKAGEUNIT}
- {$I jediapilib.inc}
- interface
- uses
- JwaActiveX, JwaWindows;
- {$HPPEMIT ''}
- {$HPPEMIT '#include "ntquery.h"'}
- {$HPPEMIT ''}
- type
- // TODO STUBS see CmdTree.h (cmdtree.idl)
- IFilter = Pointer;
- IUnkown = Pointer;
- ICommand = Pointer;
- REFIID = TGUID; // also in ActiveDS
- DBID = Pointer;
- DBCOMMANDTREE = Pointer;
- PDBCOMMANDTREE = Pointer;
- DBCOMMANDOP = Pointer;
- //
- // Use this path for the null catalog, one that doesn't have an index.
- // Use it to search for properties of files that are not indexed.
- //
- const
- CINULLCATALOG = '::_noindex_::';
- {$EXTERNALSYM CINULLCATALOG}
- //
- // Use this path to connect to the server for administration work
- // (i.e. DocStoreAdmin.) No catalog is associated with the connection
- //
- CIADMIN = '::_nodocstore_::';
- {$EXTERNALSYM CIADMIN}
- //
- // Minimal support for persistent handlers.
- //
- function LoadIFilter(pwcsPath: PWCHAR; pUnkOuter: IUnknown; out ppIUnk: IFilter): HRESULT; stdcall;
- {$EXTERNALSYM LoadIFilter}
- const
- LIFF_LOAD_DEFINED_FILTER = 1;
- {$EXTERNALSYM LIFF_LOAD_DEFINED_FILTER}
- LIFF_IMPLEMENT_TEXT_FILTER_FALLBACK_POLICY = 2;
- {$EXTERNALSYM LIFF_IMPLEMENT_TEXT_FILTER_FALLBACK_POLICY}
- LIFF_FORCE_TEXT_FILTER_FALLBACK = 3;
- {$EXTERNALSYM LIFF_FORCE_TEXT_FILTER_FALLBACK}
- function LoadIFilterEx(pwcsPath: PWCHAR; dwFlags: DWORD; const riid: REFIID; out ppIUnk: IUnknown): HRESULT; stdcall;
- {$EXTERNALSYM LoadIFilterEx}
- function BindIFilterFromStorage(pStg: IStorage; pUnkOuter: IUnknown; out ppIUnk: IFilter): HRESULT; stdcall;
- {$EXTERNALSYM BindIFilterFromStorage}
- function BindIFilterFromStream(pStm: IStream; pUnkOuter: IUnkown; out ppIUnk: IFilter): HRESULT; stdcall;
- {$EXTERNALSYM BindIFilterFromStream}
- function LocateCatalogsW(pwszScope: PWCHAR; iBmk: ULONG; pwszMachine: PWCHAR;
- var pccMachine: ULONG; pwszCat: PWCHAR; var pccCat: ULONG): HRESULT; stdcall;
- {$EXTERNALSYM LocateCatalogsW}
- //
- // For calling from VB
- //
- function LocateCatalogsA(pwszScope: PCHAR; iBmk: ULONG; pwszMachine: PCHAR;
- var pccMachine: ULONG; pwszCat: PCHAR; var pccCat: ULONG): HRESULT; stdcall;
- {$EXTERNALSYM LocateCatalogsA}
- function LocateCatalogs(pwszScope: PTCHAR; iBmk: ULONG; pwszMachine: PTCHAR;
- var pccMachine: ULONG; pwszCat: PTCHAR; var pccCat: ULONG): HRESULT; stdcall;
- {$EXTERNALSYM LocateCatalogs}
- // The Index Server Data Source Object CLSID
- const
- CLSID_INDEX_SERVER_DSO: TGUID = (
- D1:$F9AE8980; D2:$7E52; D3:$11d0; D4:($89,$64,$00,$C0,$4F,$D6,$11,$D7));
- {$EXTERNALSYM CLSID_INDEX_SERVER_DSO}
- // The storage property set
- PSGUID_STORAGE: TGUID = (
- D1:$b725f130; D2:$47ef; D3:$101a; D4:($a5,$f1,$02,$60,$8c,$9e,$eb,$ac));
- {$EXTERNALSYM PSGUID_STORAGE}
- //#define PID_STG_DICTIONARY ((PROPID) 0x00000000) //reserved
- //#define PID_STG_CODEPAGE ((PROPID) 0x00000001) //reserved
- PID_STG_DIRECTORY = PROPID($00000002);
- {$EXTERNALSYM PID_STG_DIRECTORY}
- PID_STG_CLASSID = PROPID($00000003);
- {$EXTERNALSYM PID_STG_CLASSID}
- PID_STG_STORAGETYPE = PROPID($00000004);
- {$EXTERNALSYM PID_STG_STORAGETYPE}
- PID_STG_VOLUME_ID = PROPID($00000005);
- {$EXTERNALSYM PID_STG_VOLUME_ID}
- PID_STG_PARENT_WORKID = PROPID($00000006);
- {$EXTERNALSYM PID_STG_PARENT_WORKID}
- PID_STG_SECONDARYSTORE = PROPID($00000007);
- {$EXTERNALSYM PID_STG_SECONDARYSTORE}
- PID_STG_FILEINDEX = PROPID($00000008);
- {$EXTERNALSYM PID_STG_FILEINDEX}
- PID_STG_LASTCHANGEUSN = PROPID($00000009);
- {$EXTERNALSYM PID_STG_LASTCHANGEUSN}
- PID_STG_NAME = PROPID($0000000a);
- {$EXTERNALSYM PID_STG_NAME}
- PID_STG_PATH = PROPID($0000000b);
- {$EXTERNALSYM PID_STG_PATH}
- PID_STG_SIZE = PROPID($0000000c);
- {$EXTERNALSYM PID_STG_SIZE}
- PID_STG_ATTRIBUTES = PROPID($0000000d);
- {$EXTERNALSYM PID_STG_ATTRIBUTES}
- PID_STG_WRITETIME = PROPID($0000000e);
- {$EXTERNALSYM PID_STG_WRITETIME}
- PID_STG_CREATETIME = PROPID($0000000f);
- {$EXTERNALSYM PID_STG_CREATETIME}
- PID_STG_ACCESSTIME = PROPID($00000010);
- {$EXTERNALSYM PID_STG_ACCESSTIME}
- PID_STG_CHANGETIME = PROPID($00000011);
- {$EXTERNALSYM PID_STG_CHANGETIME}
- PID_STG_CONTENTS = PROPID($00000013);
- {$EXTERNALSYM PID_STG_CONTENTS}
- PID_STG_SHORTNAME = PROPID($00000014);
- {$EXTERNALSYM PID_STG_SHORTNAME}
- PID_STG_MAX = PID_STG_SHORTNAME;
- {$EXTERNALSYM PID_STG_MAX}
- CSTORAGEPROPERTY = $15;
- {$EXTERNALSYM CSTORAGEPROPERTY}
- // File System Content Index Framework property set
- DBPROPSET_FSCIFRMWRK_EXT: TGUID = (
- D1:$A9BD1526; D2:$6A80; D3:$11D0; D4:($8C,$9D,$00,$20,$AF,$1D,$74,$0E));
- {$EXTERNALSYM DBPROPSET_FSCIFRMWRK_EXT}
- DBPROP_CI_CATALOG_NAME = 2;
- {$EXTERNALSYM DBPROP_CI_CATALOG_NAME}
- DBPROP_CI_INCLUDE_SCOPES = 3;
- {$EXTERNALSYM DBPROP_CI_INCLUDE_SCOPES}
- DBPROP_CI_DEPTHS = 4; // obsolete
- {$EXTERNALSYM DBPROP_CI_DEPTHS}
- DBPROP_CI_SCOPE_FLAGS = 4;
- {$EXTERNALSYM DBPROP_CI_SCOPE_FLAGS}
- DBPROP_CI_EXCLUDE_SCOPES = 5;
- {$EXTERNALSYM DBPROP_CI_EXCLUDE_SCOPES}
- DBPROP_CI_SECURITY_ID = 6;
- {$EXTERNALSYM DBPROP_CI_SECURITY_ID}
- DBPROP_CI_QUERY_TYPE = 7;
- {$EXTERNALSYM DBPROP_CI_QUERY_TYPE}
- // Query Extension property set
- DBPROPSET_QUERYEXT: TGUID = (
- D1:$A7AC77ED; D2:$F8D7; D3:$11CE; D4:($A7,$98,$00,$20,$F8,$00,$80,$25));
- {$EXTERNALSYM DBPROPSET_QUERYEXT}
- DBPROP_USECONTENTINDEX = 2;
- {$EXTERNALSYM DBPROP_USECONTENTINDEX}
- DBPROP_DEFERNONINDEXEDTRIMMING = 3;
- {$EXTERNALSYM DBPROP_DEFERNONINDEXEDTRIMMING}
- DBPROP_USEEXTENDEDDBTYPES = 4;
- {$EXTERNALSYM DBPROP_USEEXTENDEDDBTYPES}
- DBPROP_FIRSTROWS = 7;
- {$EXTERNALSYM DBPROP_FIRSTROWS}
- // Content Index Framework Core property set
- DBPROPSET_CIFRMWRKCORE_EXT: TGUID = (
- D1:$afafaca5; D2:$b5d1; D3:$11d0; D4:($8c,$62,$00,$c0,$4f,$c2,$db,$8d));
- {$EXTERNALSYM DBPROPSET_CIFRMWRKCORE_EXT}
- DBPROP_MACHINE = 2;
- {$EXTERNALSYM DBPROP_MACHINE}
- DBPROP_CLIENT_CLSID = 3;
- {$EXTERNALSYM DBPROP_CLIENT_CLSID}
- // MSIDXS Rowset property set
- DBPROPSET_MSIDXS_ROWSETEXT: TGUID = (
- D1:$aa6ee6b0; D2:$e828; D3:$11d0; D4:($b2,$3e,$00,$aa,$00,$47,$fc,$01));
- {$EXTERNALSYM DBPROPSET_MSIDXS_ROWSETEXT}
- MSIDXSPROP_ROWSETQUERYSTATUS = 2;
- {$EXTERNALSYM MSIDXSPROP_ROWSETQUERYSTATUS}
- MSIDXSPROP_COMMAND_LOCALE_STRING = 3;
- {$EXTERNALSYM MSIDXSPROP_COMMAND_LOCALE_STRING}
- MSIDXSPROP_QUERY_RESTRICTION = 4;
- {$EXTERNALSYM MSIDXSPROP_QUERY_RESTRICTION}
- //
- // Query status values returned by MSIDXSPROP_ROWSETQUERYSTATUS
- //
- // Bits Effect
- // ----- -----------------------------------------------------
- // 00-02 Fill Status: How data is being updated, if at all.
- // 03-15 Bitfield query reliability: How accurate the result is
- STAT_BUSY = 0;
- {$EXTERNALSYM STAT_BUSY}
- STAT_ERROR = $1;
- {$EXTERNALSYM STAT_ERROR}
- STAT_DONE = $2;
- {$EXTERNALSYM STAT_DONE}
- STAT_REFRESH = $3;
- {$EXTERNALSYM STAT_REFRESH}
- function QUERY_FILL_STATUS(x: DWORD): DWORD;
- {$EXTERNALSYM QUERY_FILL_STATUS}
- const
- STAT_PARTIAL_SCOPE = $8;
- {$EXTERNALSYM STAT_PARTIAL_SCOPE}
- STAT_NOISE_WORDS = $10;
- {$EXTERNALSYM STAT_NOISE_WORDS}
- STAT_CONTENT_OUT_OF_DATE = $20;
- {$EXTERNALSYM STAT_CONTENT_OUT_OF_DATE}
- STAT_REFRESH_INCOMPLETE = $40;
- {$EXTERNALSYM STAT_REFRESH_INCOMPLETE}
- STAT_CONTENT_QUERY_INCOMPLETE = $80;
- {$EXTERNALSYM STAT_CONTENT_QUERY_INCOMPLETE}
- STAT_TIME_LIMIT_EXCEEDED = $100;
- {$EXTERNALSYM STAT_TIME_LIMIT_EXCEEDED}
- STAT_SHARING_VIOLATION = $200;
- {$EXTERNALSYM STAT_SHARING_VIOLATION}
- function QUERY_RELIABILITY_STATUS(x: DWORD): DWORD;
- {$EXTERNALSYM QUERY_RELIABILITY_STATUS}
- // Scope flags
- const
- QUERY_SHALLOW = 0;
- {$EXTERNALSYM QUERY_SHALLOW}
- QUERY_DEEP = 1;
- {$EXTERNALSYM QUERY_DEEP}
- QUERY_PHYSICAL_PATH = 0;
- {$EXTERNALSYM QUERY_PHYSICAL_PATH}
- QUERY_VIRTUAL_PATH = 2;
- {$EXTERNALSYM QUERY_VIRTUAL_PATH}
- // query property set (PSGUID_QUERY) properties not defined in oledb.h
- PROPID_QUERY_WORKID = 5;
- {$EXTERNALSYM PROPID_QUERY_WORKID}
- PROPID_QUERY_UNFILTERED = 7;
- {$EXTERNALSYM PROPID_QUERY_UNFILTERED}
- PROPID_QUERY_VIRTUALPATH = 9;
- {$EXTERNALSYM PROPID_QUERY_VIRTUALPATH}
- PROPID_QUERY_LASTSEENTIME = 10;
- {$EXTERNALSYM PROPID_QUERY_LASTSEENTIME}
- //
- // Change or get the current state of a catalog specified.
- //
- CICAT_STOPPED = $1;
- {$EXTERNALSYM CICAT_STOPPED}
- CICAT_READONLY = $2;
- {$EXTERNALSYM CICAT_READONLY}
- CICAT_WRITABLE = $4;
- {$EXTERNALSYM CICAT_WRITABLE}
- CICAT_NO_QUERY = $8;
- {$EXTERNALSYM CICAT_NO_QUERY}
- CICAT_GET_STATE = $10;
- {$EXTERNALSYM CICAT_GET_STATE}
- CICAT_ALL_OPENED = $20;
- {$EXTERNALSYM CICAT_ALL_OPENED}
- function SetCatalogState(pwcsCat, pwcsMachine: PWCHAR; dwNewState: DWORD;
- var pdwOldState: DWORD): HRESULT; stdcall;
- {$EXTERNALSYM SetCatalogState}
- //
- // Query catalog state
- //
- const
- CI_STATE_SHADOW_MERGE = $0001; // Index is performing a shadow merge
- {$EXTERNALSYM CI_STATE_SHADOW_MERGE}
- CI_STATE_MASTER_MERGE = $0002; // Index is performing a master merge
- {$EXTERNALSYM CI_STATE_MASTER_MERGE}
- CI_STATE_CONTENT_SCAN_REQUIRED = $0004; // Index is likely corrupt, and a rescan is required
- {$EXTERNALSYM CI_STATE_CONTENT_SCAN_REQUIRED}
- CI_STATE_ANNEALING_MERGE = $0008; // Index is performing an annealing (optimizing) merge
- {$EXTERNALSYM CI_STATE_ANNEALING_MERGE}
- CI_STATE_SCANNING = $0010; // Scans are in-progress
- {$EXTERNALSYM CI_STATE_SCANNING}
- CI_STATE_RECOVERING = $0020; // Index metadata is being recovered
- {$EXTERNALSYM CI_STATE_RECOVERING}
- CI_STATE_INDEX_MIGRATION_MERGE = $0040; // Reserved for future use
- {$EXTERNALSYM CI_STATE_INDEX_MIGRATION_MERGE}
- CI_STATE_LOW_MEMORY = $0080; // Indexing is paused due to low memory availability
- {$EXTERNALSYM CI_STATE_LOW_MEMORY}
- CI_STATE_HIGH_IO = $0100; // Indexing is paused due to a high rate of I/O
- {$EXTERNALSYM CI_STATE_HIGH_IO}
- CI_STATE_MASTER_MERGE_PAUSED = $0200; // Master merge is paused
- {$EXTERNALSYM CI_STATE_MASTER_MERGE_PAUSED}
- CI_STATE_READ_ONLY = $0400; // Indexing has been manually paused (read-only)
- {$EXTERNALSYM CI_STATE_READ_ONLY}
- CI_STATE_BATTERY_POWER = $0800; // Indexing is paused to conserve battery life
- {$EXTERNALSYM CI_STATE_BATTERY_POWER}
- CI_STATE_USER_ACTIVE = $1000; // Indexing is paused due to high user activity (keyboard/mouse)
- {$EXTERNALSYM CI_STATE_USER_ACTIVE}
- CI_STATE_STARTING = $2000; // Index is still starting up
- {$EXTERNALSYM CI_STATE_STARTING}
- CI_STATE_READING_USNS = $4000; // USNs on NTFS volumes are being processed
- {$EXTERNALSYM CI_STATE_READING_USNS}
- //#include <pshpack4.h>
- type
- _CI_STATE = record
- cbStruct: DWORD;
- cWordList: DWORD;
- cPersistentIndex: DWORD;
- cQueries: DWORD;
- cDocuments: DWORD;
- cFreshTest: DWORD;
- dwMergeProgress: DWORD;
- eState: DWORD;
- cFilteredDocuments: DWORD;
- cTotalDocuments: DWORD;
- cPendingScans: DWORD;
- dwIndexSize: DWORD;
- cUniqueKeys: DWORD;
- cSecQDocuments: DWORD;
- dwPropCacheSize: DWORD;
- end;
- {$EXTERNALSYM _CI_STATE}
- CI_STATE = _CI_STATE;
- {$EXTERNALSYM CI_STATE}
- TCiState = CI_STATE;
- PCiState = ^CI_STATE;
- //#include <poppack.h>
- function CIState(pwcsCat, pwcsMachine: PWCHAR; var pCiState: CI_STATE): HRESULT; stdcall;
- {$EXTERNALSYM CIState}
- //
- // Create an ICommand, specifying scopes, catalogs, and machines
- //
- function CIMakeICommand(out ppCommand: ICommand; cScope: ULONG; aDepths: LPDWORD;
- awcsScope, awcsCatalogs, awcsMachine: PPWCHAR): HRESULT; stdcall;
- {$EXTERNALSYM CIMakeICommand}
- //
- // Create an ICommand, specifying a catalog and machine
- //
- function CICreateCommand(out ppCommand: IUnknown; pUnkOuter: IUnknown;
- const riid: REFIID; pwcsCatalog, pwcsMachine: PWCHAR): HRESULT; stdcall;
- {$EXTERNALSYM CICreateCommand}
- type
- tagCIPROPERTYDEF = record
- wcsFriendlyName: LPWSTR;
- dbType: DWORD;
- dbCol: DBID;
- end;
- {$EXTERNALSYM tagCIPROPERTYDEF}
- CIPROPERTYDEF = tagCIPROPERTYDEF;
- {$EXTERNALSYM CIPROPERTYDEF}
- TCiPropertyDef = CIPROPERTYDEF;
- PCiPropertyDef = ^CIPROPERTYDEF;
- //
- // Values for ulDialect in CITextToSelectTreeEx and CITextToFullTreeEx
- //
- const
- ISQLANG_V1 = 1; // Same as the non-Ex versions
- {$EXTERNALSYM ISQLANG_V1}
- ISQLANG_V2 = 2;
- {$EXTERNALSYM ISQLANG_V2}
- //
- // Convert pwszRestriction in Triplish to a command tree.
- //
- function CITextToSelectTree(pwszRestriction: PWCHAR; var ppTree: PDBCOMMANDTREE;
- cProperties: ULONG; pProperties: PCIPROPERTYDEF; LocaleID: LCID): HRESULT; stdcall;
- {$EXTERNALSYM CITextToSelectTree}
- function CITextToSelectTreeEx(pwszRestriction: PWCHAR; ulDialect: ULONG;
- var ppTree: PDBCOMMANDTREE; cProperties: ULONG; pProperties: PCIPROPERTYDEF;
- LocaleID: LCID): HRESULT; stdcall;
- {$EXTERNALSYM CITextToSelectTreeEx}
- //
- // Convert pwszRestriction in Triplish, project columns, sort columns
- // and grouping columns to a command tree.
- //
- function CITextToFullTree(pwszRestriction, pwszColumns, pwszSortColumns,
- pwszGroupings: PWCHAR; var ppTree: PDBCOMMANDTREE; cProperties: ULONG;
- pProperties: PCIPROPERTYDEF; LocaleID: LCID): HRESULT; stdcall;
- {$EXTERNALSYM CITextToFullTree}
- function CITextToFullTreeEx(pwszRestriction: PWCHAR; ulDialect: ULONG;
- pwszColumns, pwszSortColumns, pwszGroupings: PWCHAR; var ppTree: PDBCOMMANDTREE;
- cProperties: ULONG; pProperties: PCIPROPERTYDEF; LocaleID: LCID): HRESULT; stdcall;
- {$EXTERNALSYM CITextToFullTreeEx}
- //
- // Build a simple restriction node.
- //
- function CIBuildQueryNode(wcsProperty: PWCHAR; dbOperator: DBCOMMANDOP;
- const pvarPropertyValue: PROPVARIANT; var ppTree: PDBCOMMANDTREE;
- cProperties: ULONG; pProperty: PCIPROPERTYDEF; LocaleID: LCID): HRESULT; stdcall;
- {$EXTERNALSYM CIBuildQueryNode}
- //
- // Build a restriction tree from an existing tree (could be empty) and a newly added node/tree.
- //
- function CIBuildQueryTree(pExistingTree: PDBCOMMANDTREE; dbBoolOp: DBCOMMANDOP;
- cSiblings: ULONG; ppSibsToCombine: PDBCOMMANDTREE; var ppTree: DBCOMMANDTREE): HRESULT; stdcall;
- {$EXTERNALSYM CIBuildQueryTree}
- //
- // Convert restriction tree, project columns, sort columns
- // and grouping columns to a command tree.
- //
- function CIRestrictionToFullTree(const pTree: DBCOMMANDTREE; pwszColumns,
- pwszSortColumns, pwszGroupings: PWCHAR; var ppTree: PDBCOMMANDTREE;
- cProperties: ULONG; pReserved: PCIPROPERTYDEF; LocaleID: LCID): HRESULT; stdcall;
- {$EXTERNALSYM CIRestrictionToFullTree}
- implementation
- uses
- JwaWinDLLNames;
- function QUERY_FILL_STATUS(x: DWORD): DWORD;
- begin
- Result := x and $7;
- end;
- function QUERY_RELIABILITY_STATUS(x: DWORD): DWORD;
- begin
- Result := x and $FFF8;
- end;
- {$IFDEF DYNAMIC_LINK}
- var
- _LoadIFilterEx: Pointer;
- function LoadIFilterEx;
- begin
- GetProcedureAddress(_LoadIFilterEx, querylib, 'LoadIFilterEx');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_LoadIFilterEx]
- end;
- end;
- var
- _LoadIFilter: Pointer;
- function LoadIFilter;
- begin
- GetProcedureAddress(_LoadIFilter, querylib, 'LoadIFilter');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_LoadIFilter]
- end;
- end;
- var
- _BindIFilterFromStorage: Pointer;
- function BindIFilterFromStorage;
- begin
- GetProcedureAddress(_BindIFilterFromStorage, querylib, 'BindIFilterFromStorage');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_BindIFilterFromStorage]
- end;
- end;
- var
- _BindIFilterFromStream: Pointer;
- function BindIFilterFromStream;
- begin
- GetProcedureAddress(_BindIFilterFromStream, querylib, 'BindIFilterFromStream');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_BindIFilterFromStream]
- end;
- end;
- var
- _LocateCatalogsW: Pointer;
- function LocateCatalogsW;
- begin
- GetProcedureAddress(_LocateCatalogsW, querylib, 'LocateCatalogsW');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_LocateCatalogsW]
- end;
- end;
- var
- _LocateCatalogsA: Pointer;
- function LocateCatalogsA;
- begin
- GetProcedureAddress(_LocateCatalogsA, querylib, 'LocateCatalogsA');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_LocateCatalogsA]
- end;
- end;
- var
- _LocateCatalogs: Pointer;
- function LocateCatalogs;
- begin
- GetProcedureAddress(_LocateCatalogs, querylib, 'LocateCatalogs' + AWSuffix);
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_LocateCatalogs]
- end;
- end;
- var
- _SetCatalogState: Pointer;
- function SetCatalogState;
- begin
- GetProcedureAddress(_SetCatalogState, querylib, 'SetCatalogState');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_SetCatalogState]
- end;
- end;
- var
- _CIState: Pointer;
- function CIState;
- begin
- GetProcedureAddress(_CIState, querylib, 'CIState');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_CIState]
- end;
- end;
- var
- _CIMakeICommand: Pointer;
- function CIMakeICommand;
- begin
- GetProcedureAddress(_CIMakeICommand, querylib, 'CIMakeICommand');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_CIMakeICommand]
- end;
- end;
- var
- _CICreateCommand: Pointer;
- function CICreateCommand;
- begin
- GetProcedureAddress(_CICreateCommand, querylib, 'CICreateCommand');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_CICreateCommand]
- end;
- end;
- var
- _CITextToSelectTree: Pointer;
- function CITextToSelectTree;
- begin
- GetProcedureAddress(_CITextToSelectTree, querylib, 'CITextToSelectTree');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_CITextToSelectTree]
- end;
- end;
- var
- _CITextToSelectTreeEx: Pointer;
- function CITextToSelectTreeEx;
- begin
- GetProcedureAddress(_CITextToSelectTreeEx, querylib, 'CITextToSelectTreeEx');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_CITextToSelectTreeEx]
- end;
- end;
- var
- _CITextToFullTree: Pointer;
- function CITextToFullTree;
- begin
- GetProcedureAddress(_CITextToFullTree, querylib, 'CITextToSelectTreeEx');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_CITextToFullTree]
- end;
- end;
- var
- _CITextToFullTreeEx: Pointer;
- function CITextToFullTreeEx;
- begin
- GetProcedureAddress(_CITextToFullTreeEx, querylib, 'CITextToFullTreeEx');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_CITextToFullTreeEx]
- end;
- end;
- var
- _CIBuildQueryNode: Pointer;
- function CIBuildQueryNode;
- begin
- GetProcedureAddress(_CIBuildQueryNode, querylib, 'CIBuildQueryNode');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_CIBuildQueryNode]
- end;
- end;
- var
- _CIBuildQueryTree: Pointer;
- function CIBuildQueryTree;
- begin
- GetProcedureAddress(_CIBuildQueryTree, querylib, 'CIBuildQueryTree');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_CIBuildQueryTree]
- end;
- end;
- var
- _CIRestrictionToFullTree: Pointer;
- function CIRestrictionToFullTree;
- begin
- GetProcedureAddress(_CIRestrictionToFullTree, querylib, 'CIRestrictionToFullTree');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_CIRestrictionToFullTree]
- end;
- end;
- {$ELSE}
- function LoadIFilterEx; external querylib name 'LoadIFilterEx';
- function LoadIFilter; external querylib name 'LoadIFilter';
- function BindIFilterFromStorage; external querylib name 'BindIFilterFromStorage';
- function BindIFilterFromStream; external querylib name 'BindIFilterFromStream';
- function LocateCatalogsW; external querylib name 'LocateCatalogsW';
- function LocateCatalogsA; external querylib name 'LocateCatalogsA';
- function LocateCatalogs; external querylib name 'LocateCatalogs' + AWSuffix;
- function SetCatalogState; external querylib name 'SetCatalogState';
- function CIState; external querylib name 'CIState';
- function CIMakeICommand; external querylib name 'CIMakeICommand';
- function CICreateCommand; external querylib name 'CICreateCommand';
- function CITextToSelectTree; external querylib name 'CITextToSelectTree';
- function CITextToSelectTreeEx; external querylib name 'CITextToSelectTreeEx';
- function CITextToFullTree; external querylib name 'CITextToSelectTreeEx';
- function CITextToFullTreeEx; external querylib name 'CITextToFullTreeEx';
- function CIBuildQueryNode; external querylib name 'CIBuildQueryNode';
- function CIBuildQueryTree; external querylib name 'CIBuildQueryTree';
- function CIRestrictionToFullTree; external querylib name 'CIRestrictionToFullTree';
- {$ENDIF DYNAMIC_LINK}
- end.
|