/*++ Copyright (c) 1997 Microsoft Corporation Abstract: This module provides utilities useful for Directory Service interactions Author: Steve Wilson (NT) November 1997 Revision History: --*/ #define dw2hr(dw) ((dw == ERROR_SUCCESS) ? dw : MAKE_HRESULT(SEVERITY_ERROR, FACILITY_WIN32, dw)) typedef struct _ArgTable { PSTR pszToken; DWORD (*ArgFunction)(PSTR pszArg); } ARGTABLE, *PARGTABLE; PWSTR GetUNCName( HANDLE hPrinter ); DWORD PrintQueueExists( HWND hwnd, HANDLE hPrinter, PWSTR pszUNCName, DWORD dwAction, PWSTR pszTargetDN, PWSTR *ppszObjectDN ); DWORD MovePrintQueue( PCWSTR pszObjectGUID, PCWSTR pszNewContainer, // Container path PCWSTR pszNewCN // Object CN ); HRESULT GetPublishPointFromGUID( PCWSTR pszObjectGUID, PWSTR *ppszDN, PWSTR *ppszCN ); DWORD UNC2Server( PCWSTR pszUNC, PWSTR *ppszServer ); DWORD UNC2Printer( PCWSTR pszUNC, PWSTR *ppszPrinter ); BOOL ThisIsAColorPrinter( LPCTSTR lpstrName ); HRESULT DeleteDSObject( PWSTR pszADsPath ); DWORD GetCommonName( HANDLE hPrinter, PWSTR *ppszCommonName ); PWSTR AllocGlobalStr( PWSTR pszIn ); VOID FreeGlobalStr( PWSTR pszIn ); DWORD GetADsPathFromGUID( PCWSTR pszObjectGUID, PWSTR *ppszDN ); PWSTR GetDNWithServer( PCWSTR pszDNIn ); DWORD hr2dw( HRESULT hr ); PWSTR DelimString2MultiSz( PWSTR pszIn, WCHAR wcDelim ); HRESULT GetPrinterInfo2( HANDLE hPrinter, PPRINTER_INFO_2 *ppInfo2 ); DWORD FQDN2Canonical( PWSTR pszIn, PWSTR *ppszOut ); HRESULT FQDN2CNDN( PWSTR pszDCName, PWSTR pszFQDN, PWSTR *ppszCN, PWSTR *ppszDN ); HRESULT BuildLDAPPath( PWSTR pszDC, PWSTR pszFQDN, PWSTR *ppszLDAPPath ); DWORD Bind2DS( HANDLE *phDS, DOMAIN_CONTROLLER_INFO **ppDCI, ULONG Flags ); PWSTR DevCapStrings2MultiSz( PWSTR pszDevCapString, DWORD nDevCapStrings, DWORD dwDevCapStringLength, DWORD *pcbBytes ); BOOL DevCapMultiSz( PWSTR pszUNCName, IADs *pPrintQueue, WORD fwCapability, DWORD dwElementBytes, PWSTR pszAttributeName ); HRESULT MachineIsInMyForest( PWSTR pszMachineName );