📄 ntquery.pas
字号:
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}
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
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;
const
query = 'query.dll';
function LoadIFilter; external query name 'LoadIFilter';
function BindIFilterFromStorage; external query name 'BindIFilterFromStorage';
function BindIFilterFromStream; external query name 'BindIFilterFromStream';
function LocateCatalogsW; external query name 'LocateCatalogsW';
function LocateCatalogsA; external query name 'LocateCatalogsA';
{$IFDEF UNICODE}
function LocateCatalogs; external query name 'LocateCatalogsW';
{$ELSE}
function LocateCatalogs; external query name 'LocateCatalogsA';
{$ENDIF}
function SetCatalogState; external query name 'SetCatalogState';
function CIState; external query name 'CIState';
function CIMakeICommand; external query name 'CIMakeICommand';
function CICreateCommand; external query name 'CICreateCommand';
function CITextToSelectTree; external query name 'CITextToSelectTree';
function CITextToSelectTreeEx; external query name 'CITextToSelectTreeEx';
function CITextToFullTree; external query name 'CITextToSelectTreeEx';
function CITextToFullTreeEx; external query name 'CITextToFullTreeEx';
function CIBuildQueryNode; external query name 'CIBuildQueryNode';
function CIBuildQueryTree; external query name 'CIBuildQueryTree';
function CIRestrictionToFullTree; external query name 'CIRestrictionToFullTree';
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -