You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
131 lines
3.0 KiB
131 lines
3.0 KiB
//+------------------------------------------------------------------------
|
|
//
|
|
// Microsoft Windows
|
|
// Copyright (C) Microsoft Corporation, 1996 - 1997
|
|
//
|
|
// File: cstore.hxx
|
|
//
|
|
// Contents: Main Precompiled header for Directory Class Access Implementation
|
|
//
|
|
//
|
|
// Author: DebiM
|
|
//
|
|
//-------------------------------------------------------------------------
|
|
|
|
|
|
#include "dsbase.hxx"
|
|
#include "comcat.h"
|
|
#include "cclstor.hxx"
|
|
#include "cscaten.hxx"
|
|
#include "csenum.hxx"
|
|
#include "csevents.h"
|
|
#include "cspath.hxx"
|
|
#include "cslang.hxx"
|
|
|
|
typedef struct tagCLASSCONTAINER
|
|
{
|
|
IClassAccess *gpClassStore;
|
|
LPOLESTR pszClassStorePath;
|
|
UINT cBindFailures;
|
|
UINT cAccess;
|
|
UINT cNotFound;
|
|
} CLASSCONTAINER, *PCLASSCONTAINER;
|
|
|
|
|
|
#include "cclsto.hxx"
|
|
#include "cclsacc.hxx"
|
|
#include "csguid.h"
|
|
#include <appmgmt.h>
|
|
|
|
long CompareUsn(CSUSN *pUsn1, CSUSN *pUsn2);
|
|
|
|
HRESULT GetUserSyncPoint(LPWSTR pszContainer, CSUSN *pPrevUsn);
|
|
HRESULT AdvanceUserSyncPoint(LPWSTR pszContainer);
|
|
void GetDefaultPlatform(CSPLATFORM *pPlatform);
|
|
|
|
#define MAX_BIND_ATTEMPTS 10
|
|
#define MAXCLASSSTORES 20
|
|
|
|
//
|
|
// Link list structure for ClassContainers Seen
|
|
//
|
|
|
|
//
|
|
// Cached Class Store Bindings
|
|
//
|
|
typedef struct CachedBindings_t {
|
|
LPOLESTR szStorePath;
|
|
IClassAccess *pIClassAccess;
|
|
HRESULT Hr;
|
|
PSID Sid;
|
|
} BindingsType;
|
|
|
|
typedef struct ClassStoreCache_t {
|
|
BindingsType Bindings[MAXCLASSSTORES];
|
|
DWORD start, end, sz;
|
|
} ClassStoreCacheType;
|
|
|
|
|
|
//
|
|
// Link list structure for User Profiles Seen
|
|
//
|
|
typedef struct tagUSERPROFILE
|
|
{
|
|
PSID pCachedSid;
|
|
PCLASSCONTAINER *pUserStoreList;
|
|
DWORD cUserStoreCount;
|
|
tagUSERPROFILE *pNextUser;
|
|
} USERPROFILE;
|
|
|
|
#if defined(_X86_)
|
|
#define DEFAULT_ARCHITECTURE PROCESSOR_ARCHITECTURE_INTEL
|
|
#elif defined(_AMD64_)
|
|
#define DEFAULT_ARCHITECTURE PROCESSOR_ARCHITECTURE_AMD64
|
|
#elif defined(_IA64_)
|
|
#define DEFAULT_ARCHITECTURE PROCESSOR_ARCHITECTURE_IA64
|
|
#else
|
|
#define DEFAULT_ARCHITECTURE PROCESSOR_ARCHITECTURE_UNKNOWN
|
|
#endif
|
|
|
|
#define CS_CALL_LOCALSYSTEM 1
|
|
#define CS_CALL_USERPROCESS 2
|
|
#define CS_CALL_IMPERSONATED 3
|
|
|
|
|
|
//------------------------- Priorities and weights
|
|
|
|
//
|
|
// File Extension priority
|
|
//
|
|
// 1 bit (0)
|
|
//
|
|
#define PRI_EXTN_FACTOR (1 << 0)
|
|
|
|
//
|
|
// CLSCTX priority
|
|
//
|
|
// 2 bits (7:8)
|
|
//
|
|
#define PRI_CLSID_INPSVR (3 << 7)
|
|
#define PRI_CLSID_LCLSVR (2 << 7)
|
|
#define PRI_CLSID_REMSVR (1 << 7)
|
|
|
|
//
|
|
// UI Language priority
|
|
//
|
|
// 3 bits (9:11)
|
|
//
|
|
#define PRI_LANG_ALWAYSMATCH (4 << 9)
|
|
#define PRI_LANG_SYSTEMLOCALE (3 << 9)
|
|
#define PRI_LANG_ENGLISH (2 << 9)
|
|
#define PRI_LANG_NEUTRAL (1 << 9)
|
|
|
|
//
|
|
// Architecture priority
|
|
//
|
|
// 2 bits (12:13)
|
|
//
|
|
#define PRI_ARCH_PREF1 (2 << 12)
|
|
#define PRI_ARCH_PREF2 (1 << 12)
|
|
|
|
|