;
; Definition file of adsldpc.dll
; Automatic generated by gendef
; written by Kai Tietz 2008
;
LIBRARY "adsldpc.dll"
EXPORTS
; public: __thiscall CLexer::CLexer(void)
??0CLexer@@QAE@XZ ; has WINAPI (@0)
; public: __thiscall CLexer::~CLexer(void)
??1CLexer@@QAE@XZ ; has WINAPI (@0)
ADSIPrint@0
ADsAbandonSearch@4
ADsCloseSearchHandle@4
ADsCreateAttributeDefinition@8
ADsCreateClassDefinition@8
ADsCreateDSObject@20
ADsCreateDSObjectExt@28
ADsDeleteAttributeDefinition@4
ADsDeleteClassDefinition@4
ADsDeleteDSObject@12
ADsEnumAttributes@44
ADsEnumClasses@16
ADsExecuteSearch@124
ADsFreeColumn@4
ADsGetColumn@20
ADsGetFirstRow@8
ADsGetNextColumnName@8
ADsGetNextRow@8
ADsGetObjectAttributes@52
ADsGetPreviousRow@8
ADsHelperGetCurrentRowMessage@12
ADsObject@8
ADsSetObjectAttributes@48
ADsSetSearchPreference@28
ADsWriteAttributeDefinition@8
ADsWriteClassDefinition@8
AdsTypeToLdapTypeCopyConstruct@20
AdsTypeToLdapTypeCopyDNWithBinary@12
AdsTypeToLdapTypeCopyDNWithString@12
AdsTypeToLdapTypeCopyGeneralizedTime@12
AdsTypeToLdapTypeCopyTime@12
BerBvFree@4
BerEncodingQuotaControl@12
BuildADsParentPath@12
BuildADsParentPathFromObjectInfo2@12
BuildADsParentPathFromObjectInfo@20
BuildADsPathFromLDAPPath2@24
BuildADsPathFromLDAPPath@12
BuildADsPathFromParent@12
BuildLDAPPathFromADsPath2@16
BuildLDAPPathFromADsPath@8
ChangeSeparator@4
Component@8
ConvertSidToString@12
ConvertSidToU2Trustee@20
ConvertU2TrusteeToSid@20
FindEntryInSearchTable@12
FindSearchTableIndex@12
FreeObjectInfo@4
GetDefaultServer@28
GetDisplayName@8
GetDomainDNSNameForDomain@28
GetLDAPTypeName@8
; public: long __thiscall CLexer::GetNextToken(unsigned short *,unsigned long *)
?GetNextToken@CLexer@@QAEJPAGPAK@Z ; has WINAPI (@8)
GetServerAndPort@12
GetSyntaxOfAttribute@8
InitObjectInfo@8
; public: long __thiscall CLexer::InitializePath(unsigned short *)
?InitializePath@CLexer@@QAEJPAG@Z ; has WINAPI (@4)
IsGCNamespace@4
LdapAddExtS@20
LdapAddS@12
LdapAttributeFree@4
LdapCacheAddRef@4
LdapCloseObject@4
LdapCompareExt@28
LdapControlFree@4
LdapControlsFree@4
LdapCountEntries@8
LdapCrackUserDNtoNTLMUser2@12
LdapCreatePageControl@20
LdapDeleteExtS@16
LdapDeleteS@8
LdapFirstAttribute@16
LdapFirstEntry@12
LdapGetDn@12
LdapGetNextPageS@24
LdapGetSchemaObjectCount@20
LdapGetSubSchemaSubEntryPath@16
LdapGetSyntaxIdOfAttribute@4
LdapGetSyntaxOfAttributeOnServer@24
LdapGetValues@20
LdapGetValuesLen@20
LdapInitializeSearchPreferences@8
LdapIsClassNameValidOnServer@20
LdapMakeSchemaCacheObsolete@12
LdapMemFree@4
LdapModDnS@16
LdapModifyExtS@20
LdapModifyS@12
LdapMsgFree@4
LdapNextAttribute@16
LdapNextEntry@12
LdapOpenObject2@24
LdapOpenObject@20
LdapParsePageControl@16
LdapParseResult@32
LdapReadAttribute2@36
LdapReadAttribute@28
LdapReadAttributeFast@20
LdapRenameExtS@28
LdapResult@24
LdapSearch@28
LdapSearchAbandonPage@8
LdapSearchExtS@44
LdapSearchInitPage@48
LdapSearchS@28
LdapSearchST@32
LdapTypeBinaryToString@12
LdapTypeCopyConstruct@16
LdapTypeFreeLdapModList@4
LdapTypeFreeLdapModObject@4
LdapTypeFreeLdapObjects@4
LdapTypeToAdsTypeDNWithBinary@8
LdapTypeToAdsTypeDNWithString@8
LdapTypeToAdsTypeGeneralizedTime@8
LdapTypeToAdsTypeUTCTime@8
LdapValueFree@4
LdapValueFreeLen@4
LdapcKeepHandleAround@4
LdapcSetStickyServer@8
PathName@8
ReadPagingSupportedAttr@16
ReadSecurityDescriptorControlType@16
ReadServerSupportsIsADAMControl@16
ReadServerSupportsIsADControl@16
SchemaAddRef@4
SchemaClose@4
SchemaGetClassInfo@12
SchemaGetClassInfoByIndex@12
SchemaGetObjectCount@12
SchemaGetPropertyInfo@12
SchemaGetPropertyInfoByIndex@12
SchemaGetStringsFromStringTable@16
SchemaGetSyntaxOfAttribute@12
SchemaIsClassAContainer@12
SchemaOpen@16
; public: void __thiscall CLexer::SetAtDisabler(int)
?SetAtDisabler@CLexer@@QAEXH@Z ; has WINAPI (@4)
; public: void __thiscall CLexer::SetExclaimnationDisabler(int)
?SetExclaimnationDisabler@CLexer@@QAEXH@Z ; has WINAPI (@4)
; public: void __thiscall CLexer::SetFSlashDisabler(int)
?SetFSlashDisabler@CLexer@@QAEXH@Z ; has WINAPI (@4)
SortAndRemoveDuplicateOIDs@8
UnMarshallLDAPToLDAPSynID@20
intcmp@0
ADSIAbandonSearch@8
ADSICloseDSObject@4
ADSICloseSearchHandle@8
ADSICreateDSObject@16
ADSIDeleteDSObject@8
ADSIExecuteSearch@20
ADSIFreeColumn@8
ADSIGetColumn@16
ADSIGetFirstRow@8
ADSIGetNextColumnName@12
ADSIGetNextRow@8
ADSIGetObjectAttributes@20
ADSIGetPreviousRow@8
ADSIModifyRdn@12
ADSIOpenDSObject@20
ADSISetObjectAttributes@16
ADSISetSearchPreference@12
ADsDecodeBinaryData@12
ADsEncodeBinaryData@12
ADsGetLastError@20
ADsSetLastError@12
AdsTypeFreeAdsObjects@8
AllocADsMem@4
AllocADsStr@4
FreeADsMem@4
FreeADsStr@4
LdapTypeToAdsTypeCopyConstruct@28
MapADSTypeToLDAPType@4
MapLDAPTypeToADSType@4
ReallocADsMem@12
ReallocADsStr@8
