//--------------------------------------------------------------------------- // // Microsoft Windows // Copyright (C) Microsoft Corporation, 1992 - 1997 // // File: ndsutil.hxx // // Contents: Functions that encapsulate NDS API functions for ADSI // // // History: // Shanksh Created 10/27/97 //---------------------------------------------------------------------------- typedef struct _nds_buffer_data { pBuf_T pInBuf; pBuf_T pOutBuf; nint32 lIterationHandle; DWORD dwInfoType; DWORD dwOperation; DWORD fAllAttrs; } NDS_BUFFER_DATA, *PNDS_BUFFER_DATA; typedef HANDLE NDS_BUFFER_HANDLE, PNDS_BUFFER_HANDLE; typedef struct { LPWSTR szObjectName; LPWSTR szObjectClass; DWORD dwModificationTime; DWORD dwSubordinateCount; DWORD dwObjectFlags; DWORD dwNumAttributes; // Zero for ADsNdsReadObject results. LPVOID lpAttribute; // For ADsNdsSearch results, cast this // to either LPNDS_ATTR_INFO or // LPNDS_NAME_ONLY, depending on value of // lpdwAttrInformationType from call to // NwNdsGetObjectListFromBuffer. BOOL fNameOnly; // FALSE if lpAttribute is type NDS_ATTR_INFO, // TRUE if is of type NDS_NAME_ONLY } ADSNDS_OBJECT_INFO, * PADSNDS_OBJECT_INFO; HRESULT ADsNdsOpenContext( LPWSTR pszNDSTreeName, CCredentials& Credentials, PNDS_CONTEXT_HANDLE ppADsContext ); HRESULT ADsNdsCloseContext( NDS_CONTEXT_HANDLE pADsContext ); HRESULT ADsNdsReadObject( NDS_CONTEXT_HANDLE pADsContext, LPWSTR pszDn, DWORD dwInfoType, LPWSTR *ppAttrs, DWORD nAttrs, pTimeStamp_T pTimeStamp, PNDS_ATTR_INFO *ppAttrEntries, DWORD *pAttrsReturned ); HRESULT ADsNdsGetAttrListFromBuffer( NDS_CONTEXT_HANDLE pADsContext, pBuf_T pBuf, BOOL fNamesOnly, PVOID *ppAttriEntries, PDWORD pdwAttrReturned ); HRESULT ADsNdsAppendAttrListFromBuffer( NDS_CONTEXT_HANDLE hADsContext, pBuf_T pBuf, BOOL fAttrsOnly, PVOID *ppAttrEntries, PDWORD pNewAttrsReturned, DWORD dwCurrentAttrs ); HRESULT ADsNdsGetAttrsFromBuffer( NDS_CONTEXT_HANDLE hADsContext, pBuf_T pBuf, DWORD luAttrCount, BOOL fAttrsOnly, PVOID *ppAttrsReturned ); HRESULT FreeNdsAttrInfo( PNDS_ATTR_INFO pAttrEntries, DWORD dwNumEntries ); HRESULT FreeNdsAttrNames( PNDS_NAME_ONLY pAttrNames, DWORD dwNumEntries ); HRESULT ADsNdsListObjects( NDS_CONTEXT_HANDLE pADsContext, LPWSTR pszDn, LPWSTR classFilter, LPWSTR objectFilter, pTimeStamp_T pTimeStamp, BOOL fOnlyContainers, HANDLE *phOperationData ); HRESULT ADsNdsGetObjectListFromBuffer( NDS_CONTEXT_HANDLE pADsContext, NDS_BUFFER_HANDLE hBufData, PDWORD dwObjectsReturned, PADSNDS_OBJECT_INFO *ppObjects ); HRESULT ADsNdsFreeNdsObjInfoList( PADSNDS_OBJECT_INFO pObjInfo, DWORD dwNumEntries ); HRESULT ADsNdsReadClassDef( NDS_CONTEXT_HANDLE hADsContext, DWORD dwInfoType, LPWSTR *ppszClasses, DWORD nClasses, NDS_BUFFER_HANDLE *phBuf ); HRESULT ADsNdsGetClassDefListFromBuffer( NDS_CONTEXT_HANDLE hADsContext, NDS_BUFFER_HANDLE hBufData, PDWORD pdwNumEntries, PDWORD pdwInfoType, PNDS_CLASS_DEF *ppClassDef ); HRESULT GetItemsToList( NWDSContextHandle context, pBuf_T pBuf, DWORD luItemCount, LPWSTR_LIST *pList ); HRESULT ADsNdsFreeClassDef( PNDS_CLASS_DEF pClassDef ); HRESULT ADsNdsFreeClassDefList( PNDS_CLASS_DEF pClassDef, DWORD dwNumEntries ); HRESULT ADsNdsReadAttrDef( NDS_CONTEXT_HANDLE hADsContext, DWORD dwInfoType, LPWSTR *ppszAttrs, DWORD nAttrs, NDS_BUFFER_HANDLE *phBuf ); HRESULT ADsNdsGetAttrDefListFromBuffer( NDS_CONTEXT_HANDLE hADsContext, NDS_BUFFER_HANDLE hBufData, PDWORD pdwNumEntries, PDWORD pdwInfoType, PNDS_ATTR_DEF *ppAttrDef ); HRESULT ADsNdsFreeAttrDef( PNDS_ATTR_DEF pAttrDef ); HRESULT ADsNdsFreeAttrDefList( PNDS_ATTR_DEF pAttrDef, DWORD dwNumEntries ); HRESULT ADsNdsCreateBuffer( NDS_CONTEXT_HANDLE hADsContext, DWORD dwOperation, NDS_BUFFER_HANDLE *phBufData ); HRESULT ADsNdsFreeBuffer( NDS_BUFFER_HANDLE hBuf ); HRESULT FreeItemList( LPWSTR_LIST pList ); HRESULT ADsNdsPutInBuffer( NDS_CONTEXT_HANDLE hADsContext, NDS_BUFFER_HANDLE hBufData, LPWSTR szAttributeName, DWORD dwSyntaxID, LPNDSOBJECT lpAttributeValues, DWORD dwValueCount, DWORD dwChangeType ); HRESULT ADsNdsPutFilter( NDS_CONTEXT_HANDLE hADsContext, NDS_BUFFER_HANDLE hBufData, pFilter_Cursor_T pCur, void (N_FAR N_CDECL *freeVal)(nuint32 syntax, nptr val) ); HRESULT ADsNdsModifyObject( NDS_CONTEXT_HANDLE hADsContext, LPWSTR szObjectName, NDS_BUFFER_HANDLE hBufData ); HRESULT ADsNdsAddObject( NDS_CONTEXT_HANDLE hADsContext, LPWSTR szObjectName, NDS_BUFFER_HANDLE hBufData ); HRESULT ADsNdsGenObjectKey( NDS_CONTEXT_HANDLE hADsContext, LPWSTR szObjectName ); HRESULT ADsNdsRenameObject( NDS_CONTEXT_HANDLE hADsContext, LPWSTR pszSrcObjectDn, LPWSTR pszNewRDN ); HRESULT ADsNdsRemoveObject( NDS_CONTEXT_HANDLE hADsContext, LPWSTR szObjectName ); HRESULT ADsNdsGetSyntaxID( NDS_CONTEXT_HANDLE hADsContext, LPWSTR szAttributeName, PDWORD pdwSyntaxId ); HRESULT ADsNdsSearch( NDS_CONTEXT_HANDLE hADsContext, LPWSTR szObjectName, DWORD scope, BOOL fSearchAliases, NDS_BUFFER_HANDLE hFilterBuf, pTimeStamp_T pTimeStamp, DWORD dwInfoType, LPWSTR *ppszAttrs, DWORD nAttrs, DWORD nObjectsTobeSearched, PDWORD pnObjectsSearched, NDS_BUFFER_HANDLE *phBuf, pnint32 plIterationHandle ); HRESULT ADsNdsMoveObject( NDS_CONTEXT_HANDLE hADsContext, LPWSTR pszSrcObjectDn, LPWSTR pszDestContainerDn, LPWSTR pszNewRDN ); HRESULT ADsNdsChangeObjectPassword( NDS_CONTEXT_HANDLE hADsContext, LPWSTR szObjectName, NWOBJ_TYPE dwOT_ID, LPWSTR szOldPassword, LPWSTR szNewPassword ); HRESULT ConvertVariantArrayToStringArray( PVARIANT pVarArray, PWSTR **pppszStringArray, DWORD dwNumStrings ); HRESULT NWApiOpenPrinter( LPWSTR lpszUncPrinterName, HANDLE *phPrinter, DWORD dwAccess ); HRESULT NWApiClosePrinter( HANDLE hPrinter ); HRESULT NWApiSetPrinter( HANDLE hPrinter, DWORD dwLevel, LPBYTE lpbPrinters, DWORD dwAccess );