📄 ntquery.pas
字号:
unit NtQuery;
{$WEAKPACKAGEUNIT}
{$HPPEMIT ''}
{$HPPEMIT '#include "NTQuery.h"'}
{$HPPEMIT ''}
{$I WINDEFINES.INC}
interface
uses
ActiveX, ComObj, WinType;
type
// TODO STUBS see CmdTree.h (cmdtree.idl)
IFilter = Pointer;
IUnkown = Pointer;
ICommand = Pointer;
PPWCHAR = ^PWCHAR;
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}
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}
{$IFDEF UNICODE}
function LocateCatalogs(pwszScope: PWCHAR; iBmk: ULONG; pwszMachine: PWCHAR;
var pccMachine: ULONG; pwszCat: PWCHAR; var pccCat: ULONG): HRESULT; stdcall;
{$EXTERNALSYM LocateCatalogs}
{$ELSE}
function LocateCatalogs(pwszScope: PCHAR; iBmk: ULONG; pwszMachine: PCHAR;
var pccMachine: ULONG; pwszCat: PCHAR; var pccCat: ULONG): HRESULT; stdcall;
{$EXTERNALSYM LocateCatalogs}
{$ENDIF}
// 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_ALLOCSIZE = PROPID($00000012);
{$EXTERNALSYM PID_STG_ALLOCSIZE}
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}
// 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
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -