SampProv: Active Directory Service Provider Sample

Click to open or copy the files for the SampProv sample.

This sample is a demonstration of an Active Directory Service provider.

Main Files

File Description
CDispMgr.c Dispatch Manager implementation.
CEnumNS.c Sample Provider Namespace Enumerator Code.
CEnumObj.c Generic Object Enumeration CodeStandard IClassFactory implementation.
CEnumSch.cpp Sample Provider Enum Schema functionality.
CEnumVar.cpp Base Implementation for xxxEnumVariant derived classes.
CGenObj.cpp Microsoft ADs DS Provider Generic Object.
CNamCF.h Class factory for standard Namespace object.
CNameSp.cpp Sample Namespace Object.
Common.cpp Contains routines and properties that are common to all tshirt objects. Tshirt objects get the routines and properties through C++ inheritance.
Common.h Contains Sample Provider routines and properties that are common to all objects.  Objects get the routines and properties through C++ inheritance.
Core.cpp CCoreADsObject Implementation.
Core.h Core ADS Obect.
CProps.cpp Property Cache functionality.
CProps.h Property Cache Object.
CProv.cpp ADsSampleDS Provider Object.
CProv.h Provides Moniker support for OLE DS GetObject.
CProvCF.cpp ADs Provider Object Class Factory Code.
CProvCf.h Class Factory for Provider Object.
CPrpObj.h Sample Provider GetObject functionality.
Formtrck.hxx This file defines facilities for a standard implementation of reference-counted objects, incorporating mechanisms for tracking the usage history of the objects.
GetObj.cpp Sample Provider GetObject functionality.
Guid.cpp Sample CLSIDS.
Guid.h Extern references for Sample Guids.
IntF.cpp Interface for ADS.
LibMain.cpp LibMain for ADsSmp.dll.
Memory.cpp This module provides all the memory management functions for all Sample Provider components.
Object.cpp ObjectTypeList class.
Parse.cpp DS Pathname Parser.  The Pathname Parser is a key component in ADs providers. It checks for syntactic validity of an ADs pathname that has been passed to this provider. If the syntax is valid, then an OBJECTINFO structure is constructed.
RegDSAPI.cpp Sample Provider Registry DS APIs.
SmpOper.cpp SampleDS DataType Operation routines.
SmpTypes.h Definitions for Sample DS Data Types and structures used by the SampleDS Regsitry APIs to exchange data.
StdFact.cpp Standard IClassFactory implementation.
Util.h Utilities.

Building SDK Samples

This sample uses the following keywords:

_adsclass; _adsguid; _adspath; _assert; _bstradspath; _bstrname; _bstrsampledstreename; _bstrsyntax; _buffer; _cb; _dwendofstring; _dwlasttoken; _dwlasttokenlength; _dwmaxproperties; _dwnumberofmandatoryattributes; _dwobjectstate; _lpclassname; _lpmandatoryattributes; _name; _parent; _pcoreadsobject; _pdispmgr; _pobjlist; _pproperties; _ptr; _schema; _ulrefs; _wcsicmp; addcomponent; addproperty; addprovidername; addref; addrootrdn; addtypeinfo; adsassert; adsdecrement; adsincrement; adsobject; allocateclassobject; allocategenobject; allocatenamespaceobject; allocatepropertyobject; allocateschema; allocprovmem; allocprovstr; appendcomponent; array_size; bail_if_error; bail_on_failure; bail_on_success; buildadsguid; buildadsparentpath; buildadspath; buildadspathfromdspath; builddefaultobjectarray; builddsfilterarray; builddsparentpathfromdspath; builddspathfromadspath; builddspathfromdsparentpath; builddstreenamefromadspath; buildobjectarray; buildsampledsrootrdnfromadspath; buildschemapath; ccoreadsobject; cdispatchmgr; cdynamiccf; checkandreturnresult; checkresult; clexer; clone; cls; cocreateinstance; component; containing_record; continue_on_failure; convertsafearraytovariantarray; copyhere; copysampleds1tosampledssynid1; copysampleds2tosampledssynid2; copysampledssynid1tosampleds1; copysampledssynid2tosampleds2; copysampledssynidtosampleds; copysampledstosampledssynid; cpropertycache; create; createandappendfilterentry; createclass; creategenericobject; createinstance; createnamespace; createobjecttypelist; createpointermoniker; createproperty; createpropertycache; createpropertyentry; createpropertylist; createschema; createtokenlist; csampledsclass; csampledsenumvariant; csampledsgenobject; csampledsgenobjectenum; csampledsnamespace; csampledsnamespaceenum; csampledsproperty; csampledsprovider; csampledsschema; csampledsschemaenum; debugbreak; dec_object_count; declare_ads_compound_iunknown; declare_ads_delegating_iunknown; declare_ads_private_iunknown; declare_ads_standard_iunknown; declare_ads_subobject_iunknown; define_contained_iads_implementation; define_guid; define_iads_implementation; define_idispatch_implementation; define_idispatch_implementation_unimplemented; delete; detach; dispgetidsofnames; dispinvoke; dllcanunloadnow; dllgetclassobject; dllmain; dspathname; dump_tracking_info; dump_tracking_info_delete; dump_tracking_info_keep; dumptrackinginfo; dword_align_up; enlist_tracking; enumclasses; enumgenericobjects; enumobjects; enumproperties; failed; fetchnextobject; fetchobjects; findproperty; findtypeinfo; findtypeinfoentry; freefilterlist; freelist; freepropertyentry; freeprovmem; freeprovstr; generate_newids; gentypeinfoid; get; get__newenum; get_abstract; get_adspath; get_auxderivedfrom; get_auxiliary; get_bstr_property; get_class; get_clsid; get_container; get_containment; get_coreadsclass; get_coreadspath; get_coreguid; get_corename; get_coreparent; get_coreschema; get_count; get_date_property; get_derivedfrom; get_filter; get_guid; get_helpfilecontext; get_helpfilename; get_hints; get_long_property; get_mandatoryproperties; get_maxrange; get_minrange; get_multivalued; get_name; get_namingproperties; get_object_count; get_oid; get_optionalproperties; get_parent; get_possiblesuperiors; get_primaryinterface; get_schema; get_syntax; get_variant_bool_property; get_variant_property; getclassobject; getcurrentobject; getdispid; getex; getgenobject; getidsofnames; getinfo; getinfoex; getinterfaceptr; getlasterror; getnamespaceobject; getnexttoken; getobject; getobjectstate; getproperty; getpropertyobject; getschemaobject; gettypeinfo; gettypeinfocount; gettypeinfoid; gettypeinfoofguid; hresult_from_win32; implement_ads_compound_iunknown; implement_ads_private_iunknown; implement_ads_subobject_iunknown; inc_object_count; initializecoreobject; instantiatederivedobject; interlockeddecrement; interlockedincrement; invoke; isclasstracking; iscompatibleoleversion; isequalclsid; isequaliid; iskeyword; isvaliddsfilter; isvalidfilter; lexer; libmain; loadregtypelib; loadtypeinfo; loadtypeinfoentry; localalloc; localfree; lpregds_enum; makeuncname; makevariantfromproplist; mapsyntaxidtoadssyntax; mapsyntaxidtosampledssyntax; markasnewenum; marshallproperty; marshallsampledssynidtosampleds; memcpy; memset; min; movehere; my##cls; my##parent_cls; next; nextchar; nexttoken; no_copy; notok; objecttracker; objecttypelist; ok; olebuildversion; packdateinvariant; packlonginvariant; packstringinvariant; packvariant_boolinvariant; packvariantinvariant; parsedisplayname; passivate; pathname; prepbuffer; printhresult; printiid; privateunknown; property_flags; property_name; property_numvalues; property_sampledsobject; property_syntax; property_values; provallocstring; provfreestring; providername; pushbackchar; pushbacktoken; put; put_abstract; put_auxderivedfrom; put_auxiliary; put_bstr_property; put_clsid; put_container; put_containment; put_date_property; put_derivedfrom; put_filter; put_helpfilecontext; put_helpfilename; put_hints; put_long_property; put_mandatoryproperties; put_maxrange; put_minrange; put_multivalued; put_namingproperties; put_oid; put_optionalproperties; put_possiblesuperiors; put_syntax; put_variant_bool_property; put_variant_property; putex; putproperty; qualifiers; query_interface; queryinterface; reallocprovmem; reallocprovstr; regclosekey; regcreatekey; regdeleteallkeys; regdeletekey; regenumkey; regenumkeyex; regenumvalue; regopenkey; regopenkeyex; regqueryinfokey; regqueryvalueex; regsetvalueex; relativegetobject; release; reset; resolvepathname; resultfromscode; rreturn; rreturn1; rreturn2; rreturn3; rreturn_enum_status; safearraycreate; safearraydestroy; safearraygetelement; safearraygetlbound; safearraygetubound; safearrayputelement; sampledsaddobject; sampledscloseobject; sampledscreatebuffer; sampledscreateobject; sampledsfreebuffer; sampledsfreeclassdefinition; sampledsfreeenum; sampledsfreepropertydefinition; sampledsgetclassdefinition; sampledsgetclassinfo; sampledsgetpropertydefinition; sampledsgetpropertyinfo; sampledsgettype; sampledsgettypetext; sampledsmarshallproperties; sampledsmodifyobject; sampledsnextrdn; sampledsobject; sampledsopenobject; sampledsrdnenum; sampledsreadobject; sampledsremoveobject; sampledssetobject; sampledstypeclear; sampledstypecopy; sampledstypecopyconstruct; sampledstypecopysampledssynid1; sampledstypecopysampledssynid2; sampledstypefreesampledsobjects; sampledstypefreesampledssynid1; sampledstypefreesampledssynid2; sampledstypetovartypecopy; sampledstypetovartypecopyconstruct; sampledstypetovartypecopysampledssynid1; sampledstypetovartypecopysampledssynid2; sampledsunmarshallproperties; schemacomponent; schemapathname; setinfo; setlasterror; setobjectstate; settype; skip; sreturn; stdaddref; stdapi_; stdclassfactory; stdmethod; stdmethod_; stdmethodimp_; stdrelease; stringfromguid2; subaddref; subrelease; succeeded; switch; sysallocstring; sysfreestring; text; tracehresult; traceiid; track_class; trackclass; trackclassname; treturn; type; typeinfoinvoke; unboundgetproperty; unmarshallproperty; unmarshallsampledstosampledssynid; unpackdatefromvariant; unpacklongfromvariant; unpackstringfromvariant; unpackvariant_boolfromvariant; unpackvariantfromvariant; updateproperty; validate_ptr; validatenamespaceobject; validateobjecttype; validateoutparameter; validateprovider; validateschemaobject; variantclear; variantcopy; variantinit; vartypefreevarobjects; vartypetosampledstypecopy; vartypetosampledstypecopyconstruct; vartypetosampledstypecopysampledssynid1; vartypetosampledstypecopysampledssynid2; warn_error; watchinterface; wcscat; wcschr; wcscmp; wcscpy; wcslen; word_align_down; wsprintf; xx_put_bstr; xx_put_date; xx_put_long; xx_put_variant; xx_put_variant_bool