#define MAXCOMPONENTS 10 #define TOKEN_IDENTIFIER 1 #define TOKEN_COMMA 2 // // This no longer exists //#define TOKEN_BSLASH 3 // #define TOKEN_END 4 #define TOKEN_DOMAIN 5 #define TOKEN_USER 6 #define TOKEN_GROUP 7 #define TOKEN_PRINTER 8 #define TOKEN_COMPUTER 9 #define TOKEN_SERVICE 10 #define TOKEN_ATSIGN 11 #define TOKEN_EXCLAMATION 12 #define TOKEN_COLON 13 #define TOKEN_FSLASH 14 #define TOKEN_PROVIDER 15 #define TOKEN_SCHEMA 16 #define TOKEN_CLASS 17 #define TOKEN_PROPERTY 18 #define TOKEN_SYNTAX 19 #define TOKEN_FILESHARE 20 #define TOKEN_FILESERVICE 21 #define TOKEN_NAMESPACE 22 #define TOKEN_LOCALGROUP 23 #define TOKEN_GLOBALGROUP 24 #define TOKEN_WORKGROUP 25 typedef struct _objectinfo { LPWSTR ProviderName; DWORD ObjectType; DWORD NumComponents; LPWSTR ComponentArray[MAXCOMPONENTS]; LPWSTR DisplayComponentArray[MAXCOMPONENTS]; } OBJECTINFO, *POBJECTINFO; HRESULT GetObject(LPWSTR szBuffer, LPVOID * ppObject, CWinNTCredentials& Credentials); HRESULT GetNamespaceObject(POBJECTINFO pObjectInfo, LPVOID * ppObject); HRESULT GetDomainObject(POBJECTINFO pObjectInfo, LPVOID * ppObject, CWinNTCredentials& Credentials); HRESULT GetWorkGroupObject(POBJECTINFO pObjectInfo, LPVOID * ppObject, CWinNTCredentials& Credentials); HRESULT GetUserObject(POBJECTINFO pObjectInfo, LPVOID * ppObject, CWinNTCredentials& Credentials); HRESULT GetComputerObject(POBJECTINFO pObjectInfo, LPVOID * ppObject, CWinNTCredentials& Credentials); HRESULT GetServiceObject(POBJECTINFO pObjectInfo, LPVOID * ppObject, CWinNTCredentials& Credentials); HRESULT GetPrinterObject(POBJECTINFO pObjectInfo, LPVOID * ppObject, CWinNTCredentials& Credentials); HRESULT GetFileServiceObject(POBJECTINFO pObjectInfo, LPVOID * ppObject, CWinNTCredentials& Credentials); HRESULT GetFileShareObject(POBJECTINFO pObjectInfo, LPVOID * ppObject, CWinNTCredentials& Credentials); HRESULT GetGroupObject(POBJECTINFO pObjectInfo, LPVOID * ppObject, CWinNTCredentials& Credentials); HRESULT GetLocalGroupObject(POBJECTINFO pObjectInfo, LPVOID * ppObject, CWinNTCredentials& Credentials); HRESULT GetGlobalGroupObject(POBJECTINFO pObjectInfo, LPVOID * ppObject, CWinNTCredentials& Credentials); HRESULT GetSchemaObject(POBJECTINFO pObjectInfo, LPVOID * ppObject, CWinNTCredentials& Credentials); HRESULT GetClassObject(POBJECTINFO pObjectInfo, LPVOID * ppObject, CWinNTCredentials& Credentials); HRESULT GetSyntaxObject(POBJECTINFO pObjectInfo, LPVOID * ppObject, CWinNTCredentials& Credentials); HRESULT GetPropertyObject(POBJECTINFO pObjectInfo, LPVOID * ppObject, CWinNTCredentials& Credentials); HRESULT HeuristicGetObject(POBJECTINFO pObjectInfo, LPVOID * ppObject, CWinNTCredentials& Credentials); // Additional Heuristic function to get the object on NOWKSTA services HRESULT HeuristicGetObjectNoWksta(POBJECTINFO pObjectInfo, LPVOID * ppObject, CWinNTCredentials& Credentials); HRESULT AddComponent(POBJECTINFO pObjectInfo, LPWSTR szToken, LPWSTR szDisplayToken); HRESULT AddProviderName(POBJECTINFO pObjectInfo, LPWSTR szToken); HRESULT SetType(POBJECTINFO pObjectInfo, DWORD dwToken); HRESULT ValidateNamespaceObject( POBJECTINFO pObjectInfo ); HRESULT ValidateComputerObject( POBJECTINFO pObjectInfo, CWinNTCredentials& Credentials ); HRESULT ValidateUserObject( POBJECTINFO pObjectInfo, PDWORD pdwParentId, CWinNTCredentials& Credentials ); HRESULT ValidateGroupObject( POBJECTINFO pObjectInfo, PULONG puGroupType, PDWORD pdwParentId, CWinNTCredentials& Credentials ); HRESULT BuildADsPath(POBJECTINFO pObjectInfo, LPWSTR szBuffer); HRESULT BuildParent(POBJECTINFO pObjectInfo, LPWSTR szBuffer); HRESULT BuildGrandParent(POBJECTINFO pObjectInfo, LPWSTR szBuffer); HRESULT ValidateComputerParent( LPWSTR szDomainName, LPWSTR szComputerName, CWinNTCredentials& Credentials ); // Overloaded function called when SAM Name is required HRESULT ValidateComputerParent( LPWSTR szDomainName, LPWSTR szComputerName, LPWSTR szSAMName, CWinNTCredentials& Credentials ); HRESULT ValidatePrinterObject( POBJECTINFO pObjectInfo, CWinNTCredentials& CCredentials ); HRESULT ValidatePrintDeviceObject( POBJECTINFO pObjectInfo, CWinNTCredentials& CCredentials ); HRESULT ValidateServiceObject( POBJECTINFO pObjectInfo, CWinNTCredentials& CCredentials ); HRESULT ValidateFileServiceObject( POBJECTINFO pObjectInfo, CWinNTCredentials& CCredentials ); HRESULT ValidateFileShareObject( POBJECTINFO pObjectInfo, CWinNTCredentials& CCredentials ); HRESULT GetPrinterFromPath( LPTSTR *pszPrinter, LPWSTR szPathName ); HRESULT ValidateGlobalGroupObject( LPWSTR szServerName, LPWSTR *pszGroupName, CWinNTCredentials& Credentials ); HRESULT ValidateLocalGroupObject( LPWSTR szServerName, LPWSTR *pszGroupName, CWinNTCredentials& Credentials ); HRESULT GetComputerParent( LPTSTR pszComputerName, LPTSTR pszComputerParentName, CWinNTCredentials& Credentials ); HRESULT ConstructFullObjectInfo( POBJECTINFO pObjectInfo, POBJECTINFO *ppFullObjectInfo, CWinNTCredentials& Credentials ); HRESULT GetGroupObjectInComputer( LPWSTR pszHostServerName, // pdc name POBJECTINFO pObjectInfo, CWinNTCredentials& Credentials, LPVOID * ppObject); HRESULT GetUserObjectInComputer( LPWSTR pszHostServerName, // pdc name POBJECTINFO pObjectInfo, CWinNTCredentials& Credentials, LPVOID * ppObject ); HRESULT GetUserObjectInDomain( LPWSTR pszHostServerName, POBJECTINFO pObjectInfo, CWinNTCredentials& Credentials, LPVOID * ppObject ); HRESULT GetUserObjectInComputer( LPWSTR pszHostServerName, // pdc name POBJECTINFO pObjectInfo, CWinNTCredentials& Credentials, LPVOID * ppObject );