229 lines
3.5 KiB
C++
229 lines
3.5 KiB
C++
//+------------------------------------------------------------------------
|
|
//
|
|
// Class: Common
|
|
//
|
|
// Purpose: Contains Winnt routines and properties that are common to
|
|
// all Winnt objects. Winnt objects get the routines and
|
|
// properties through C++ inheritance.
|
|
//
|
|
//-------------------------------------------------------------------------
|
|
|
|
#define MAX_DWORD 0xFFFFFFFF
|
|
#define SCHEMA_NAME L"Schema"
|
|
|
|
|
|
HRESULT
|
|
MakeUncName(
|
|
LPWSTR szSrcBuffer,
|
|
LPWSTR szTargBuffer
|
|
);
|
|
|
|
HRESULT
|
|
ValidateOutParameter(
|
|
BSTR * retval
|
|
);
|
|
|
|
HRESULT
|
|
BuildADsPath(
|
|
LPWSTR Parent,
|
|
LPWSTR Name,
|
|
LPWSTR *pADsPath
|
|
);
|
|
|
|
HRESULT
|
|
BuildSchemaPath(
|
|
LPWSTR Parent,
|
|
LPWSTR Name,
|
|
LPWSTR Schema,
|
|
LPWSTR *pSchemaPath
|
|
);
|
|
|
|
|
|
HRESULT
|
|
BuildADsGuid(
|
|
REFCLSID clsid,
|
|
BSTR *pADsClass
|
|
);
|
|
|
|
|
|
//
|
|
// (remote or local) machine's product type
|
|
//
|
|
|
|
typedef DWORD PRODUCTTYPE;
|
|
|
|
#define PRODTYPE_INVALID 0
|
|
#define PRODTYPE_WKSTA 1 // workstation
|
|
#define PRODTYPE_STDALONESVR 2 // standalone server
|
|
#define PRODTYPE_DC 3 // domain controller (primary or backup)
|
|
|
|
HRESULT
|
|
GetMachineProductType(
|
|
IN LPTSTR pszServer,
|
|
OUT PRODUCTTYPE *pdwProductType
|
|
);
|
|
|
|
|
|
//
|
|
// Accessing Well-known object types
|
|
//
|
|
|
|
typedef struct _filters {
|
|
WCHAR szObjectName[MAX_PATH];
|
|
DWORD dwFilterId;
|
|
} FILTERS, *PFILTERS;
|
|
|
|
|
|
extern PFILTERS gpFilters;
|
|
extern DWORD gdwMaxFilters;
|
|
|
|
HRESULT
|
|
GetObjectType(
|
|
PFILTERS pFilters,
|
|
DWORD dwMaxFilters,
|
|
LPWSTR ClassName,
|
|
PDWORD pdwObjectType
|
|
);
|
|
|
|
|
|
HRESULT
|
|
BuildObjectInfo(
|
|
LPWSTR ADsParent,
|
|
LPWSTR Name,
|
|
POBJECTINFO * ppObjectInfo
|
|
);
|
|
|
|
HRESULT
|
|
BuildObjectInfo(
|
|
LPWSTR ADsPath,
|
|
POBJECTINFO * ppObjectInfo
|
|
);
|
|
|
|
HRESULT
|
|
MakeWinNTDomainAndName(
|
|
POBJECTINFO pObjectInfo,
|
|
LPWSTR szDomName
|
|
);
|
|
|
|
HRESULT
|
|
MakeWinNTAccountName(
|
|
POBJECTINFO pObjectInfo,
|
|
LPWSTR szDomName,
|
|
BOOL fConnectToReg
|
|
);
|
|
|
|
VOID
|
|
FreeObjectInfo(
|
|
POBJECTINFO pObjectInfo,
|
|
BOOL fStatic = FALSE
|
|
);
|
|
|
|
HRESULT
|
|
CopyObjectInfo(
|
|
POBJECTINFO pObjectInfo,
|
|
POBJECTINFO *pTargObjectInfo
|
|
);
|
|
|
|
HRESULT
|
|
ValidateObject(
|
|
DWORD dwObjectType,
|
|
POBJECTINFO pObjectInfo,
|
|
CWinNTCredentials& Credentials
|
|
);
|
|
|
|
|
|
HRESULT
|
|
ValidateProvider(
|
|
POBJECTINFO pObjectInfo
|
|
);
|
|
|
|
HRESULT
|
|
GetDomainFromPath(
|
|
LPTSTR ADsPath,
|
|
LPTSTR szDomainName
|
|
);
|
|
|
|
HRESULT
|
|
GetServerFromPath(
|
|
LPTSTR ADsPath,
|
|
LPTSTR szDomainName
|
|
);
|
|
|
|
|
|
HRESULT
|
|
GetPrinterNameFromInfo(
|
|
LPTSTR szInfoName,
|
|
LPTSTR szPrinterName
|
|
);
|
|
|
|
BOOL
|
|
WinNTEnumPrinters(
|
|
DWORD dwType,
|
|
LPTSTR lpszName,
|
|
DWORD dwLevel,
|
|
LPBYTE *lplpbPrinters,
|
|
LPDWORD lpdwReturned
|
|
);
|
|
|
|
|
|
BOOL
|
|
WinNTGetPrinter(
|
|
HANDLE hPrinter,
|
|
DWORD dwLevel,
|
|
LPBYTE *lplpbPrinters
|
|
);
|
|
|
|
|
|
DWORD
|
|
TickCountDiff(
|
|
DWORD dwTime1,
|
|
DWORD dwTime2
|
|
);
|
|
|
|
|
|
HRESULT
|
|
BuildComputerFromObjectInfo(POBJECTINFO pObjectInfo,
|
|
LPTSTR pszADsPath
|
|
);
|
|
|
|
HRESULT
|
|
DelimitedStringToVariant(
|
|
LPTSTR pszString,
|
|
VARIANT *pvar,
|
|
TCHAR Delimiter
|
|
);
|
|
|
|
HRESULT
|
|
FPNWSERVERADDRtoString(
|
|
FPNWSERVERADDR WkstaAddress,
|
|
LPWSTR * pszString
|
|
);
|
|
|
|
|
|
PKEYDATA
|
|
CreateTokenList(
|
|
LPWSTR pKeyData
|
|
);
|
|
|
|
DWORD
|
|
DelimitedStrSize(
|
|
LPWSTR pszString,
|
|
WCHAR Delimiter
|
|
);
|
|
|
|
DWORD
|
|
NulledStrSize(
|
|
LPWSTR pszString
|
|
);
|
|
|
|
|
|
HRESULT
|
|
GetSidIntoCache(
|
|
LPTSTR lpszServerName,
|
|
LPTSTR lpszHostName,
|
|
CPropertyCache * pPropertyCache,
|
|
BOOL fExplicit
|
|
);
|
|
|
|
|