winldap.h 45 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963
  1. /**
  2. * This file has no copyright assigned and is placed in the Public Domain.
  3. * This file is part of the mingw-w64 runtime package.
  4. * No warranty is given; refer to the file DISCLAIMER.PD within this package.
  5. */
  6. #ifndef LDAP_CLIENT_DEFINED
  7. #define LDAP_CLIENT_DEFINED
  8. #ifdef __cplusplus
  9. extern "C" {
  10. #endif
  11. #ifndef BASETYPES
  12. #include <windef.h>
  13. #endif
  14. #include <schnlsp.h>
  15. #define WINLDAPAPI DECLSPEC_IMPORT
  16. #ifndef LDAPAPI
  17. #define LDAPAPI __cdecl
  18. #endif
  19. #ifndef LDAP_UNICODE
  20. #if defined(UNICODE)
  21. #define LDAP_UNICODE 1
  22. #else
  23. #define LDAP_UNICODE 0
  24. #endif
  25. #endif
  26. #define LDAP_PORT 389
  27. #define LDAP_SSL_PORT 636
  28. #define LDAP_GC_PORT 3268
  29. #define LDAP_SSL_GC_PORT 3269
  30. #define LDAP_VERSION1 1
  31. #define LDAP_VERSION2 2
  32. #define LDAP_VERSION3 3
  33. #define LDAP_VERSION LDAP_VERSION2
  34. #define LDAP_BIND_CMD __MSABI_LONG(0x60)
  35. #define LDAP_UNBIND_CMD __MSABI_LONG(0x42)
  36. #define LDAP_SEARCH_CMD __MSABI_LONG(0x63)
  37. #define LDAP_MODIFY_CMD __MSABI_LONG(0x66)
  38. #define LDAP_ADD_CMD __MSABI_LONG(0x68)
  39. #define LDAP_DELETE_CMD __MSABI_LONG(0x4a)
  40. #define LDAP_MODRDN_CMD __MSABI_LONG(0x6c)
  41. #define LDAP_COMPARE_CMD __MSABI_LONG(0x6e)
  42. #define LDAP_ABANDON_CMD __MSABI_LONG(0x50)
  43. #define LDAP_SESSION_CMD __MSABI_LONG(0x71)
  44. #define LDAP_EXTENDED_CMD __MSABI_LONG(0x77)
  45. #define LDAP_RES_BIND __MSABI_LONG(0x61)
  46. #define LDAP_RES_SEARCH_ENTRY __MSABI_LONG(0x64)
  47. #define LDAP_RES_SEARCH_RESULT __MSABI_LONG(0x65)
  48. #define LDAP_RES_MODIFY __MSABI_LONG(0x67)
  49. #define LDAP_RES_ADD __MSABI_LONG(0x69)
  50. #define LDAP_RES_DELETE __MSABI_LONG(0x6b)
  51. #define LDAP_RES_MODRDN __MSABI_LONG(0x6d)
  52. #define LDAP_RES_COMPARE __MSABI_LONG(0x6f)
  53. #define LDAP_RES_SESSION __MSABI_LONG(0x72)
  54. #define LDAP_RES_REFERRAL __MSABI_LONG(0x73)
  55. #define LDAP_RES_EXTENDED __MSABI_LONG(0x78)
  56. #define LDAP_RES_ANY (__MSABI_LONG(-1))
  57. #define LDAP_INVALID_CMD 0xff
  58. #define LDAP_INVALID_RES 0xff
  59. typedef enum {
  60. LDAP_SUCCESS = 0x00,LDAP_OPERATIONS_ERROR = 0x01,LDAP_PROTOCOL_ERROR = 0x02,LDAP_TIMELIMIT_EXCEEDED = 0x03,LDAP_SIZELIMIT_EXCEEDED = 0x04,
  61. LDAP_COMPARE_FALSE = 0x05,LDAP_COMPARE_TRUE = 0x06,LDAP_AUTH_METHOD_NOT_SUPPORTED = 0x07,LDAP_STRONG_AUTH_REQUIRED = 0x08,LDAP_REFERRAL_V2 = 0x09,
  62. LDAP_PARTIAL_RESULTS = 0x09,LDAP_REFERRAL = 0x0a,LDAP_ADMIN_LIMIT_EXCEEDED = 0x0b,LDAP_UNAVAILABLE_CRIT_EXTENSION = 0x0c,
  63. LDAP_CONFIDENTIALITY_REQUIRED = 0x0d,LDAP_SASL_BIND_IN_PROGRESS = 0x0e,LDAP_NO_SUCH_ATTRIBUTE = 0x10,LDAP_UNDEFINED_TYPE = 0x11,
  64. LDAP_INAPPROPRIATE_MATCHING = 0x12,LDAP_CONSTRAINT_VIOLATION = 0x13,LDAP_ATTRIBUTE_OR_VALUE_EXISTS = 0x14,LDAP_INVALID_SYNTAX = 0x15,
  65. LDAP_NO_SUCH_OBJECT = 0x20,LDAP_ALIAS_PROBLEM = 0x21,LDAP_INVALID_DN_SYNTAX = 0x22,LDAP_IS_LEAF = 0x23,LDAP_ALIAS_DEREF_PROBLEM = 0x24,
  66. LDAP_INAPPROPRIATE_AUTH = 0x30,LDAP_INVALID_CREDENTIALS = 0x31,LDAP_INSUFFICIENT_RIGHTS = 0x32,LDAP_BUSY = 0x33,LDAP_UNAVAILABLE = 0x34,
  67. LDAP_UNWILLING_TO_PERFORM = 0x35,LDAP_LOOP_DETECT = 0x36,LDAP_SORT_CONTROL_MISSING = 0x3C,LDAP_OFFSET_RANGE_ERROR = 0x3D,
  68. LDAP_NAMING_VIOLATION = 0x40,LDAP_OBJECT_CLASS_VIOLATION = 0x41,LDAP_NOT_ALLOWED_ON_NONLEAF = 0x42,LDAP_NOT_ALLOWED_ON_RDN = 0x43,
  69. LDAP_ALREADY_EXISTS = 0x44,LDAP_NO_OBJECT_CLASS_MODS = 0x45,LDAP_RESULTS_TOO_LARGE = 0x46,LDAP_AFFECTS_MULTIPLE_DSAS = 0x47,
  70. LDAP_VIRTUAL_LIST_VIEW_ERROR = 0x4c,LDAP_OTHER = 0x50,LDAP_SERVER_DOWN = 0x51,LDAP_LOCAL_ERROR = 0x52,LDAP_ENCODING_ERROR = 0x53,
  71. LDAP_DECODING_ERROR = 0x54,LDAP_TIMEOUT = 0x55,LDAP_AUTH_UNKNOWN = 0x56,LDAP_FILTER_ERROR = 0x57,LDAP_USER_CANCELLED = 0x58,LDAP_PARAM_ERROR = 0x59,
  72. LDAP_NO_MEMORY = 0x5a,LDAP_CONNECT_ERROR = 0x5b,LDAP_NOT_SUPPORTED = 0x5c,LDAP_NO_RESULTS_RETURNED = 0x5e,LDAP_CONTROL_NOT_FOUND = 0x5d,
  73. LDAP_MORE_RESULTS_TO_RETURN = 0x5f,LDAP_CLIENT_LOOP = 0x60,LDAP_REFERRAL_LIMIT_EXCEEDED = 0x61
  74. } LDAP_RETCODE;
  75. #define LDAP_AUTH_SIMPLE __MSABI_LONG(0x80)
  76. #define LDAP_AUTH_SASL __MSABI_LONG(0x83)
  77. #define LDAP_AUTH_OTHERKIND __MSABI_LONG(0x86)
  78. #define LDAP_AUTH_SICILY (LDAP_AUTH_OTHERKIND | 0x0200)
  79. #define LDAP_AUTH_MSN (LDAP_AUTH_OTHERKIND | 0x0800)
  80. #define LDAP_AUTH_NTLM (LDAP_AUTH_OTHERKIND | 0x1000)
  81. #define LDAP_AUTH_DPA (LDAP_AUTH_OTHERKIND | 0x2000)
  82. #define LDAP_AUTH_NEGOTIATE (LDAP_AUTH_OTHERKIND | 0x0400)
  83. #define LDAP_AUTH_SSPI LDAP_AUTH_NEGOTIATE
  84. #define LDAP_AUTH_DIGEST (LDAP_AUTH_OTHERKIND | 0x4000)
  85. #define LDAP_AUTH_EXTERNAL (LDAP_AUTH_OTHERKIND | 0x0020)
  86. #define LDAP_FILTER_AND 0xa0
  87. #define LDAP_FILTER_OR 0xa1
  88. #define LDAP_FILTER_NOT 0xa2
  89. #define LDAP_FILTER_EQUALITY 0xa3
  90. #define LDAP_FILTER_SUBSTRINGS 0xa4
  91. #define LDAP_FILTER_GE 0xa5
  92. #define LDAP_FILTER_LE 0xa6
  93. #define LDAP_FILTER_PRESENT 0x87
  94. #define LDAP_FILTER_APPROX 0xa8
  95. #define LDAP_FILTER_EXTENSIBLE 0xa9
  96. #define LDAP_SUBSTRING_INITIAL __MSABI_LONG(0x80)
  97. #define LDAP_SUBSTRING_ANY __MSABI_LONG(0x81)
  98. #define LDAP_SUBSTRING_FINAL __MSABI_LONG(0x82)
  99. #define LDAP_DEREF_NEVER 0
  100. #define LDAP_DEREF_SEARCHING 1
  101. #define LDAP_DEREF_FINDING 2
  102. #define LDAP_DEREF_ALWAYS 3
  103. #define LDAP_NO_LIMIT 0
  104. #define LDAP_OPT_DNS 0x00000001
  105. #define LDAP_OPT_CHASE_REFERRALS 0x00000002
  106. #define LDAP_OPT_RETURN_REFS 0x00000004
  107. #ifndef _WIN64
  108. #pragma pack(push,4)
  109. #endif
  110. typedef struct ldap {
  111. struct {
  112. UINT_PTR sb_sd;
  113. UCHAR Reserved1[(10*sizeof(ULONG))+1];
  114. ULONG_PTR sb_naddr;
  115. UCHAR Reserved2[(6*sizeof(ULONG))];
  116. } ld_sb;
  117. PCHAR ld_host;
  118. ULONG ld_version;
  119. UCHAR ld_lberoptions;
  120. ULONG ld_deref;
  121. ULONG ld_timelimit;
  122. ULONG ld_sizelimit;
  123. ULONG ld_errno;
  124. PCHAR ld_matched;
  125. PCHAR ld_error;
  126. ULONG ld_msgid;
  127. UCHAR Reserved3[(6*sizeof(ULONG))+1];
  128. ULONG ld_cldaptries;
  129. ULONG ld_cldaptimeout;
  130. ULONG ld_refhoplimit;
  131. ULONG ld_options;
  132. } LDAP,*PLDAP;
  133. typedef struct l_timeval {
  134. LONG tv_sec;
  135. LONG tv_usec;
  136. } LDAP_TIMEVAL,*PLDAP_TIMEVAL;
  137. typedef struct berval {
  138. ULONG bv_len;
  139. PCHAR bv_val;
  140. } LDAP_BERVAL,*PLDAP_BERVAL,BERVAL,*PBERVAL,BerValue;
  141. typedef struct ldapmsg {
  142. ULONG lm_msgid;
  143. ULONG lm_msgtype;
  144. PVOID lm_ber;
  145. struct ldapmsg *lm_chain;
  146. struct ldapmsg *lm_next;
  147. ULONG lm_time;
  148. PLDAP Connection;
  149. PVOID Request;
  150. ULONG lm_returncode;
  151. USHORT lm_referral;
  152. BOOLEAN lm_chased;
  153. BOOLEAN lm_eom;
  154. BOOLEAN ConnectionReferenced;
  155. } LDAPMessage,*PLDAPMessage;
  156. typedef struct ldapcontrolA {
  157. PCHAR ldctl_oid;
  158. struct berval ldctl_value;
  159. BOOLEAN ldctl_iscritical;
  160. } LDAPControlA,*PLDAPControlA;
  161. typedef struct ldapcontrolW {
  162. PWCHAR ldctl_oid;
  163. struct berval ldctl_value;
  164. BOOLEAN ldctl_iscritical;
  165. } LDAPControlW,*PLDAPControlW;
  166. #if LDAP_UNICODE
  167. #define LDAPControl LDAPControlW
  168. #define PLDAPControl PLDAPControlW
  169. #else
  170. #define LDAPControl LDAPControlA
  171. #define PLDAPControl PLDAPControlA
  172. #endif
  173. #define LDAP_CONTROL_REFERRALS_W L"1.2.840.113556.1.4.616"
  174. #define LDAP_CONTROL_REFERRALS "1.2.840.113556.1.4.616"
  175. #define LDAP_MOD_ADD 0x00
  176. #define LDAP_MOD_DELETE 0x01
  177. #define LDAP_MOD_REPLACE 0x02
  178. #define LDAP_MOD_BVALUES 0x80
  179. typedef struct ldapmodW {
  180. ULONG mod_op;
  181. PWCHAR mod_type;
  182. union {
  183. PWCHAR *modv_strvals;
  184. struct berval **modv_bvals;
  185. } mod_vals;
  186. } LDAPModW,*PLDAPModW;
  187. typedef struct ldapmodA {
  188. ULONG mod_op;
  189. PCHAR mod_type;
  190. union {
  191. PCHAR *modv_strvals;
  192. struct berval **modv_bvals;
  193. } mod_vals;
  194. } LDAPModA,*PLDAPModA;
  195. #if LDAP_UNICODE
  196. #define LDAPMod LDAPModW
  197. #define PLDAPMod PLDAPModW
  198. #else
  199. #define LDAPMod LDAPModA
  200. #define PLDAPMod PLDAPModA
  201. #endif
  202. #ifndef _WIN64
  203. #pragma pack(pop)
  204. #endif
  205. #define LDAP_IS_CLDAP(ld) ((ld)->ld_sb.sb_naddr > 0)
  206. #define mod_values mod_vals.modv_strvals
  207. #define mod_bvalues mod_vals.modv_bvals
  208. #define NAME_ERROR(n) ((n & 0xf0)==0x20)
  209. WINLDAPAPI LDAP *LDAPAPI ldap_openW(const PWCHAR HostName,ULONG PortNumber);
  210. WINLDAPAPI LDAP *LDAPAPI ldap_openA(const PCHAR HostName,ULONG PortNumber);
  211. WINLDAPAPI LDAP *LDAPAPI ldap_initW(const PWCHAR HostName,ULONG PortNumber);
  212. WINLDAPAPI LDAP *LDAPAPI ldap_initA(const PCHAR HostName,ULONG PortNumber);
  213. WINLDAPAPI LDAP *LDAPAPI ldap_sslinitW(PWCHAR HostName,ULONG PortNumber,int secure);
  214. WINLDAPAPI LDAP *LDAPAPI ldap_sslinitA(PCHAR HostName,ULONG PortNumber,int secure);
  215. WINLDAPAPI ULONG LDAPAPI ldap_connect(LDAP *ld,struct l_timeval *timeout);
  216. #if LDAP_UNICODE
  217. #define ldap_open ldap_openW
  218. #define ldap_init ldap_initW
  219. #define ldap_sslinit ldap_sslinitW
  220. #else
  221. WINLDAPAPI LDAP *LDAPAPI ldap_open(PCHAR HostName,ULONG PortNumber);
  222. WINLDAPAPI LDAP *LDAPAPI ldap_init(PCHAR HostName,ULONG PortNumber);
  223. WINLDAPAPI LDAP *LDAPAPI ldap_sslinit(PCHAR HostName,ULONG PortNumber,int secure);
  224. #endif
  225. WINLDAPAPI LDAP *LDAPAPI cldap_openW(PWCHAR HostName,ULONG PortNumber);
  226. WINLDAPAPI LDAP *LDAPAPI cldap_openA(PCHAR HostName,ULONG PortNumber);
  227. #if LDAP_UNICODE
  228. #define cldap_open cldap_openW
  229. #else
  230. WINLDAPAPI LDAP *LDAPAPI cldap_open(PCHAR HostName,ULONG PortNumber);
  231. #endif
  232. WINLDAPAPI ULONG LDAPAPI ldap_unbind(LDAP *ld);
  233. WINLDAPAPI ULONG LDAPAPI ldap_unbind_s(LDAP *ld);
  234. WINLDAPAPI ULONG LDAPAPI ldap_get_option(LDAP *ld,int option,void *outvalue);
  235. WINLDAPAPI ULONG LDAPAPI ldap_get_optionW(LDAP *ld,int option,void *outvalue);
  236. WINLDAPAPI ULONG LDAPAPI ldap_set_option(LDAP *ld,int option,const void *invalue);
  237. WINLDAPAPI ULONG LDAPAPI ldap_set_optionW(LDAP *ld,int option,const void *invalue);
  238. #if LDAP_UNICODE
  239. #define ldap_get_option ldap_get_optionW
  240. #define ldap_set_option ldap_set_optionW
  241. #endif
  242. #define LDAP_OPT_API_INFO 0x00
  243. #define LDAP_OPT_DESC 0x01
  244. #define LDAP_OPT_DEREF 0x02
  245. #define LDAP_OPT_SIZELIMIT 0x03
  246. #define LDAP_OPT_TIMELIMIT 0x04
  247. #define LDAP_OPT_THREAD_FN_PTRS 0x05
  248. #define LDAP_OPT_REBIND_FN 0x06
  249. #define LDAP_OPT_REBIND_ARG 0x07
  250. #define LDAP_OPT_REFERRALS 0x08
  251. #define LDAP_OPT_RESTART 0x09
  252. #define LDAP_OPT_SSL 0x0a
  253. #define LDAP_OPT_IO_FN_PTRS 0x0b
  254. #define LDAP_OPT_CACHE_FN_PTRS 0x0d
  255. #define LDAP_OPT_CACHE_STRATEGY 0x0e
  256. #define LDAP_OPT_CACHE_ENABLE 0x0f
  257. #define LDAP_OPT_REFERRAL_HOP_LIMIT 0x10
  258. #define LDAP_OPT_PROTOCOL_VERSION 0x11
  259. #define LDAP_OPT_VERSION 0x11
  260. #define LDAP_OPT_API_FEATURE_INFO 0x15
  261. #define LDAP_OPT_HOST_NAME 0x30
  262. #define LDAP_OPT_ERROR_NUMBER 0x31
  263. #define LDAP_OPT_ERROR_STRING 0x32
  264. #define LDAP_OPT_SERVER_ERROR 0x33
  265. #define LDAP_OPT_SERVER_EXT_ERROR 0x34
  266. #define LDAP_OPT_HOST_REACHABLE 0x3E
  267. #define LDAP_OPT_PING_KEEP_ALIVE 0x36
  268. #define LDAP_OPT_PING_WAIT_TIME 0x37
  269. #define LDAP_OPT_PING_LIMIT 0x38
  270. #define LDAP_OPT_DNSDOMAIN_NAME 0x3B
  271. #define LDAP_OPT_GETDSNAME_FLAGS 0x3D
  272. #define LDAP_OPT_PROMPT_CREDENTIALS 0x3F
  273. #define LDAP_OPT_AUTO_RECONNECT 0x91
  274. #define LDAP_OPT_SSPI_FLAGS 0x92
  275. #define LDAP_OPT_SSL_INFO 0x93
  276. #define LDAP_OPT_TLS LDAP_OPT_SSL
  277. #define LDAP_OPT_TLS_INFO LDAP_OPT_SSL_INFO
  278. #define LDAP_OPT_SIGN 0x95
  279. #define LDAP_OPT_ENCRYPT 0x96
  280. #define LDAP_OPT_SASL_METHOD 0x97
  281. #define LDAP_OPT_AREC_EXCLUSIVE 0x98
  282. #define LDAP_OPT_SECURITY_CONTEXT 0x99
  283. #define LDAP_OPT_ROOTDSE_CACHE 0x9a
  284. #define LDAP_OPT_TCP_KEEPALIVE 0x40
  285. #define LDAP_OPT_FAST_CONCURRENT_BIND 0x41
  286. #define LDAP_OPT_SEND_TIMEOUT 0x42
  287. #define LDAP_OPT_ON ((void *) 1)
  288. #define LDAP_OPT_OFF ((void *) 0)
  289. #define LDAP_CHASE_SUBORDINATE_REFERRALS 0x00000020
  290. #define LDAP_CHASE_EXTERNAL_REFERRALS 0x00000040
  291. WINLDAPAPI ULONG LDAPAPI ldap_simple_bindW(LDAP *ld,PWCHAR dn,PWCHAR passwd);
  292. WINLDAPAPI ULONG LDAPAPI ldap_simple_bindA(LDAP *ld,PCHAR dn,PCHAR passwd);
  293. WINLDAPAPI ULONG LDAPAPI ldap_simple_bind_sW(LDAP *ld,PWCHAR dn,PWCHAR passwd);
  294. WINLDAPAPI ULONG LDAPAPI ldap_simple_bind_sA(LDAP *ld,PCHAR dn,PCHAR passwd);
  295. WINLDAPAPI ULONG LDAPAPI ldap_bindW(LDAP *ld,PWCHAR dn,PWCHAR cred,ULONG method);
  296. WINLDAPAPI ULONG LDAPAPI ldap_bindA(LDAP *ld,PCHAR dn,PCHAR cred,ULONG method);
  297. WINLDAPAPI ULONG LDAPAPI ldap_bind_sW(LDAP *ld,PWCHAR dn,PWCHAR cred,ULONG method);
  298. WINLDAPAPI ULONG LDAPAPI ldap_bind_sA(LDAP *ld,PCHAR dn,PCHAR cred,ULONG method);
  299. WINLDAPAPI INT LDAPAPI ldap_sasl_bindA(LDAP *ExternalHandle,const PCHAR DistName,const PCHAR AuthMechanism,const BERVAL *cred,PLDAPControlA *ServerCtrls,PLDAPControlA *ClientCtrls,int *MessageNumber);
  300. WINLDAPAPI INT LDAPAPI ldap_sasl_bindW(LDAP *ExternalHandle,const PWCHAR DistName,const PWCHAR AuthMechanism,const BERVAL *cred,PLDAPControlW *ServerCtrls,PLDAPControlW *ClientCtrls,int *MessageNumber);
  301. WINLDAPAPI INT LDAPAPI ldap_sasl_bind_sA(LDAP *ExternalHandle,const PCHAR DistName,const PCHAR AuthMechanism,const BERVAL *cred,PLDAPControlA *ServerCtrls,PLDAPControlA *ClientCtrls,PBERVAL *ServerData);
  302. WINLDAPAPI INT LDAPAPI ldap_sasl_bind_sW(LDAP *ExternalHandle,const PWCHAR DistName,const PWCHAR AuthMechanism,const BERVAL *cred,PLDAPControlW *ServerCtrls,PLDAPControlW *ClientCtrls,PBERVAL *ServerData);
  303. #if LDAP_UNICODE
  304. #define ldap_simple_bind ldap_simple_bindW
  305. #define ldap_simple_bind_s ldap_simple_bind_sW
  306. #define ldap_bind ldap_bindW
  307. #define ldap_bind_s ldap_bind_sW
  308. #define ldap_sasl_bind ldap_sasl_bindW
  309. #define ldap_sasl_bind_s ldap_sasl_bind_sW
  310. #else
  311. WINLDAPAPI ULONG LDAPAPI ldap_simple_bind(LDAP *ld,const PCHAR dn,const PCHAR passwd);
  312. WINLDAPAPI ULONG LDAPAPI ldap_simple_bind_s(LDAP *ld,const PCHAR dn,const PCHAR passwd);
  313. WINLDAPAPI ULONG LDAPAPI ldap_bind(LDAP *ld,const PCHAR dn,const PCHAR cred,ULONG method);
  314. WINLDAPAPI ULONG LDAPAPI ldap_bind_s(LDAP *ld,const PCHAR dn,const PCHAR cred,ULONG method);
  315. #define ldap_sasl_bind ldap_sasl_bindA
  316. #define ldap_sasl_bind_s ldap_sasl_bind_sA
  317. #endif
  318. #define LDAP_SCOPE_BASE 0x00
  319. #define LDAP_SCOPE_ONELEVEL 0x01
  320. #define LDAP_SCOPE_SUBTREE 0x02
  321. WINLDAPAPI ULONG LDAPAPI ldap_searchW(LDAP *ld,const PWCHAR base,ULONG scope,const PWCHAR filter,PWCHAR attrs[],ULONG attrsonly);
  322. WINLDAPAPI ULONG LDAPAPI ldap_searchA(LDAP *ld,const PCHAR base,ULONG scope,const PCHAR filter,PCHAR attrs[],ULONG attrsonly);
  323. WINLDAPAPI ULONG LDAPAPI ldap_search_sW(LDAP *ld,const PWCHAR base,ULONG scope,const PWCHAR filter,PWCHAR attrs[],ULONG attrsonly,LDAPMessage **res);
  324. WINLDAPAPI ULONG LDAPAPI ldap_search_sA(LDAP *ld,const PCHAR base,ULONG scope,const PCHAR filter,PCHAR attrs[],ULONG attrsonly,LDAPMessage **res);
  325. WINLDAPAPI ULONG LDAPAPI ldap_search_stW(LDAP *ld,const PWCHAR base,ULONG scope,const PWCHAR filter,PWCHAR attrs[],ULONG attrsonly,struct l_timeval *timeout,LDAPMessage **res);
  326. WINLDAPAPI ULONG LDAPAPI ldap_search_stA(LDAP *ld,const PCHAR base,ULONG scope,const PCHAR filter,PCHAR attrs[],ULONG attrsonly,struct l_timeval *timeout,LDAPMessage **res);
  327. WINLDAPAPI ULONG LDAPAPI ldap_search_extW(LDAP *ld,const PWCHAR base,ULONG scope,const PWCHAR filter,PWCHAR attrs[],ULONG attrsonly,PLDAPControlW *ServerControls,PLDAPControlW *ClientControls,ULONG TimeLimit,ULONG SizeLimit,ULONG *MessageNumber);
  328. WINLDAPAPI ULONG LDAPAPI ldap_search_extA(LDAP *ld,const PCHAR base,ULONG scope,const PCHAR filter,PCHAR attrs[],ULONG attrsonly,PLDAPControlA *ServerControls,PLDAPControlA *ClientControls,ULONG TimeLimit,ULONG SizeLimit,ULONG *MessageNumber);
  329. WINLDAPAPI ULONG LDAPAPI ldap_search_ext_sW(LDAP *ld,const PWCHAR base,ULONG scope,const PWCHAR filter,PWCHAR attrs[],ULONG attrsonly,PLDAPControlW *ServerControls,PLDAPControlW *ClientControls,struct l_timeval *timeout,ULONG SizeLimit,LDAPMessage **res);
  330. WINLDAPAPI ULONG LDAPAPI ldap_search_ext_sA(LDAP *ld,const PCHAR base,ULONG scope,const PCHAR filter,PCHAR attrs[],ULONG attrsonly,PLDAPControlA *ServerControls,PLDAPControlA *ClientControls,struct l_timeval *timeout,ULONG SizeLimit,LDAPMessage **res);
  331. #if LDAP_UNICODE
  332. #define ldap_search ldap_searchW
  333. #define ldap_search_s ldap_search_sW
  334. #define ldap_search_st ldap_search_stW
  335. #define ldap_search_ext ldap_search_extW
  336. #define ldap_search_ext_s ldap_search_ext_sW
  337. #else
  338. WINLDAPAPI ULONG LDAPAPI ldap_search(LDAP *ld,PCHAR base,ULONG scope,PCHAR filter,PCHAR attrs[],ULONG attrsonly);
  339. WINLDAPAPI ULONG LDAPAPI ldap_search_s(LDAP *ld,PCHAR base,ULONG scope,PCHAR filter,PCHAR attrs[],ULONG attrsonly,LDAPMessage **res);
  340. WINLDAPAPI ULONG LDAPAPI ldap_search_st(LDAP *ld,PCHAR base,ULONG scope,PCHAR filter,PCHAR attrs[],ULONG attrsonly,struct l_timeval *timeout,LDAPMessage **res);
  341. WINLDAPAPI ULONG LDAPAPI ldap_search_ext(LDAP *ld,PCHAR base,ULONG scope,PCHAR filter,PCHAR attrs[],ULONG attrsonly,PLDAPControlA *ServerControls,PLDAPControlA *ClientControls,ULONG TimeLimit,ULONG SizeLimit,ULONG *MessageNumber);
  342. WINLDAPAPI ULONG LDAPAPI ldap_search_ext_s(LDAP *ld,PCHAR base,ULONG scope,PCHAR filter,PCHAR attrs[],ULONG attrsonly,PLDAPControlA *ServerControls,PLDAPControlA *ClientControls,struct l_timeval *timeout,ULONG SizeLimit,LDAPMessage **res);
  343. #endif
  344. WINLDAPAPI ULONG LDAPAPI ldap_check_filterW(LDAP *ld,PWCHAR SearchFilter);
  345. WINLDAPAPI ULONG LDAPAPI ldap_check_filterA(LDAP *ld,PCHAR SearchFilter);
  346. #if LDAP_UNICODE
  347. #define ldap_check_filter ldap_check_filterW
  348. #else
  349. #define ldap_check_filter ldap_check_filterA
  350. #endif
  351. WINLDAPAPI ULONG LDAPAPI ldap_modifyW(LDAP *ld,PWCHAR dn,LDAPModW *mods[]);
  352. WINLDAPAPI ULONG LDAPAPI ldap_modifyA(LDAP *ld,PCHAR dn,LDAPModA *mods[]);
  353. WINLDAPAPI ULONG LDAPAPI ldap_modify_sW(LDAP *ld,PWCHAR dn,LDAPModW *mods[]);
  354. WINLDAPAPI ULONG LDAPAPI ldap_modify_sA(LDAP *ld,PCHAR dn,LDAPModA *mods[]);
  355. WINLDAPAPI ULONG LDAPAPI ldap_modify_extW(LDAP *ld,const PWCHAR dn,LDAPModW *mods[],PLDAPControlW *ServerControls,PLDAPControlW *ClientControls,ULONG *MessageNumber);
  356. WINLDAPAPI ULONG LDAPAPI ldap_modify_extA(LDAP *ld,const PCHAR dn,LDAPModA *mods[],PLDAPControlA *ServerControls,PLDAPControlA *ClientControls,ULONG *MessageNumber);
  357. WINLDAPAPI ULONG LDAPAPI ldap_modify_ext_sW(LDAP *ld,const PWCHAR dn,LDAPModW *mods[],PLDAPControlW *ServerControls,PLDAPControlW *ClientControls);
  358. WINLDAPAPI ULONG LDAPAPI ldap_modify_ext_sA(LDAP *ld,const PCHAR dn,LDAPModA *mods[],PLDAPControlA *ServerControls,PLDAPControlA *ClientControls);
  359. #if LDAP_UNICODE
  360. #define ldap_modify ldap_modifyW
  361. #define ldap_modify_s ldap_modify_sW
  362. #define ldap_modify_ext ldap_modify_extW
  363. #define ldap_modify_ext_s ldap_modify_ext_sW
  364. #else
  365. WINLDAPAPI ULONG LDAPAPI ldap_modify(LDAP *ld,PCHAR dn,LDAPModA *mods[]);
  366. WINLDAPAPI ULONG LDAPAPI ldap_modify_s(LDAP *ld,PCHAR dn,LDAPModA *mods[]);
  367. WINLDAPAPI ULONG LDAPAPI ldap_modify_ext(LDAP *ld,const PCHAR dn,LDAPModA *mods[],PLDAPControlA *ServerControls,PLDAPControlA *ClientControls,ULONG *MessageNumber);
  368. WINLDAPAPI ULONG LDAPAPI ldap_modify_ext_s(LDAP *ld,const PCHAR dn,LDAPModA *mods[],PLDAPControlA *ServerControls,PLDAPControlA *ClientControls);
  369. #endif
  370. WINLDAPAPI ULONG LDAPAPI ldap_modrdn2W (LDAP *ExternalHandle,const PWCHAR DistinguishedName,const PWCHAR NewDistinguishedName,INT DeleteOldRdn);
  371. WINLDAPAPI ULONG LDAPAPI ldap_modrdn2A (LDAP *ExternalHandle,const PCHAR DistinguishedName,const PCHAR NewDistinguishedName,INT DeleteOldRdn);
  372. WINLDAPAPI ULONG LDAPAPI ldap_modrdnW (LDAP *ExternalHandle,const PWCHAR DistinguishedName,const PWCHAR NewDistinguishedName);
  373. WINLDAPAPI ULONG LDAPAPI ldap_modrdnA (LDAP *ExternalHandle,const PCHAR DistinguishedName,const PCHAR NewDistinguishedName);
  374. WINLDAPAPI ULONG LDAPAPI ldap_modrdn2_sW (LDAP *ExternalHandle,const PWCHAR DistinguishedName,const PWCHAR NewDistinguishedName,INT DeleteOldRdn);
  375. WINLDAPAPI ULONG LDAPAPI ldap_modrdn2_sA (LDAP *ExternalHandle,const PCHAR DistinguishedName,const PCHAR NewDistinguishedName,INT DeleteOldRdn);
  376. WINLDAPAPI ULONG LDAPAPI ldap_modrdn_sW (LDAP *ExternalHandle,const PWCHAR DistinguishedName,const PWCHAR NewDistinguishedName);
  377. WINLDAPAPI ULONG LDAPAPI ldap_modrdn_sA (LDAP *ExternalHandle,const PCHAR DistinguishedName,const PCHAR NewDistinguishedName);
  378. #if LDAP_UNICODE
  379. #define ldap_modrdn2 ldap_modrdn2W
  380. #define ldap_modrdn ldap_modrdnW
  381. #define ldap_modrdn2_s ldap_modrdn2_sW
  382. #define ldap_modrdn_s ldap_modrdn_sW
  383. #else
  384. WINLDAPAPI ULONG LDAPAPI ldap_modrdn2 (LDAP *ExternalHandle,const PCHAR DistinguishedName,const PCHAR NewDistinguishedName,INT DeleteOldRdn);
  385. WINLDAPAPI ULONG LDAPAPI ldap_modrdn (LDAP *ExternalHandle,const PCHAR DistinguishedName,const PCHAR NewDistinguishedName);
  386. WINLDAPAPI ULONG LDAPAPI ldap_modrdn2_s (LDAP *ExternalHandle,const PCHAR DistinguishedName,const PCHAR NewDistinguishedName,INT DeleteOldRdn);
  387. WINLDAPAPI ULONG LDAPAPI ldap_modrdn_s (LDAP *ExternalHandle,const PCHAR DistinguishedName,const PCHAR NewDistinguishedName);
  388. #endif
  389. WINLDAPAPI ULONG LDAPAPI ldap_rename_extW(LDAP *ld,const PWCHAR dn,const PWCHAR NewRDN,const PWCHAR NewParent,INT DeleteOldRdn,PLDAPControlW *ServerControls,PLDAPControlW *ClientControls,ULONG *MessageNumber);
  390. WINLDAPAPI ULONG LDAPAPI ldap_rename_extA(LDAP *ld,const PCHAR dn,const PCHAR NewRDN,const PCHAR NewParent,INT DeleteOldRdn,PLDAPControlA *ServerControls,PLDAPControlA *ClientControls,ULONG *MessageNumber);
  391. WINLDAPAPI ULONG LDAPAPI ldap_rename_ext_sW(LDAP *ld,const PWCHAR dn,const PWCHAR NewRDN,const PWCHAR NewParent,INT DeleteOldRdn,PLDAPControlW *ServerControls,PLDAPControlW *ClientControls);
  392. WINLDAPAPI ULONG LDAPAPI ldap_rename_ext_sA(LDAP *ld,const PCHAR dn,const PCHAR NewRDN,const PCHAR NewParent,INT DeleteOldRdn,PLDAPControlA *ServerControls,PLDAPControlA *ClientControls);
  393. #if LDAP_UNICODE
  394. #define ldap_rename ldap_rename_extW
  395. #define ldap_rename_s ldap_rename_ext_sW
  396. #else
  397. #define ldap_rename ldap_rename_extA
  398. #define ldap_rename_s ldap_rename_ext_sA
  399. #endif
  400. #if LDAP_UNICODE
  401. #define ldap_rename_ext ldap_rename_extW
  402. #define ldap_rename_ext_s ldap_rename_ext_sW
  403. #else
  404. WINLDAPAPI ULONG LDAPAPI ldap_rename_ext(LDAP *ld,const PCHAR dn,const PCHAR NewRDN,const PCHAR NewParent,INT DeleteOldRdn,PLDAPControlA *ServerControls,PLDAPControlA *ClientControls,ULONG *MessageNumber);
  405. WINLDAPAPI ULONG LDAPAPI ldap_rename_ext_s(LDAP *ld,const PCHAR dn,const PCHAR NewRDN,const PCHAR NewParent,INT DeleteOldRdn,PLDAPControlA *ServerControls,PLDAPControlA *ClientControls);
  406. #endif
  407. WINLDAPAPI ULONG LDAPAPI ldap_addW(LDAP *ld,PWCHAR dn,LDAPModW *attrs[]);
  408. WINLDAPAPI ULONG LDAPAPI ldap_addA(LDAP *ld,PCHAR dn,LDAPModA *attrs[]);
  409. WINLDAPAPI ULONG LDAPAPI ldap_add_sW(LDAP *ld,PWCHAR dn,LDAPModW *attrs[]);
  410. WINLDAPAPI ULONG LDAPAPI ldap_add_sA(LDAP *ld,PCHAR dn,LDAPModA *attrs[]);
  411. WINLDAPAPI ULONG LDAPAPI ldap_add_extW(LDAP *ld,const PWCHAR dn,LDAPModW *attrs[],PLDAPControlW *ServerControls,PLDAPControlW *ClientControls,ULONG *MessageNumber);
  412. WINLDAPAPI ULONG LDAPAPI ldap_add_extA(LDAP *ld,const PCHAR dn,LDAPModA *attrs[],PLDAPControlA *ServerControls,PLDAPControlA *ClientControls,ULONG *MessageNumber);
  413. WINLDAPAPI ULONG LDAPAPI ldap_add_ext_sW(LDAP *ld,const PWCHAR dn,LDAPModW *attrs[],PLDAPControlW *ServerControls,PLDAPControlW *ClientControls);
  414. WINLDAPAPI ULONG LDAPAPI ldap_add_ext_sA(LDAP *ld,const PCHAR dn,LDAPModA *attrs[],PLDAPControlA *ServerControls,PLDAPControlA *ClientControls);
  415. #if LDAP_UNICODE
  416. #define ldap_add ldap_addW
  417. #define ldap_add_s ldap_add_sW
  418. #define ldap_add_ext ldap_add_extW
  419. #define ldap_add_ext_s ldap_add_ext_sW
  420. #else
  421. WINLDAPAPI ULONG LDAPAPI ldap_add(LDAP *ld,PCHAR dn,LDAPMod *attrs[]);
  422. WINLDAPAPI ULONG LDAPAPI ldap_add_s(LDAP *ld,PCHAR dn,LDAPMod *attrs[]);
  423. WINLDAPAPI ULONG LDAPAPI ldap_add_ext(LDAP *ld,const PCHAR dn,LDAPModA *attrs[],PLDAPControlA *ServerControls,PLDAPControlA *ClientControls,ULONG *MessageNumber);
  424. WINLDAPAPI ULONG LDAPAPI ldap_add_ext_s(LDAP *ld,const PCHAR dn,LDAPModA *attrs[],PLDAPControlA *ServerControls,PLDAPControlA *ClientControls);
  425. #endif
  426. WINLDAPAPI ULONG LDAPAPI ldap_compareW(LDAP *ld,const PWCHAR dn,const PWCHAR attr,PWCHAR value);
  427. WINLDAPAPI ULONG LDAPAPI ldap_compareA(LDAP *ld,const PCHAR dn,const PCHAR attr,PCHAR value);
  428. WINLDAPAPI ULONG LDAPAPI ldap_compare_sW(LDAP *ld,const PWCHAR dn,const PWCHAR attr,PWCHAR value);
  429. WINLDAPAPI ULONG LDAPAPI ldap_compare_sA(LDAP *ld,const PCHAR dn,const PCHAR attr,PCHAR value);
  430. #if LDAP_UNICODE
  431. #define ldap_compare ldap_compareW
  432. #define ldap_compare_s ldap_compare_sW
  433. #else
  434. WINLDAPAPI ULONG LDAPAPI ldap_compare(LDAP *ld,const PCHAR dn,const PCHAR attr,PCHAR value);
  435. WINLDAPAPI ULONG LDAPAPI ldap_compare_s(LDAP *ld,const PCHAR dn,const PCHAR attr,PCHAR value);
  436. #endif
  437. WINLDAPAPI ULONG LDAPAPI ldap_compare_extW(LDAP *ld,const PWCHAR dn,const PWCHAR Attr,const PWCHAR Value,struct berval *Data,PLDAPControlW *ServerControls,PLDAPControlW *ClientControls,ULONG *MessageNumber);
  438. WINLDAPAPI ULONG LDAPAPI ldap_compare_extA(LDAP *ld,const PCHAR dn,const PCHAR Attr,const PCHAR Value,struct berval *Data,PLDAPControlA *ServerControls,PLDAPControlA *ClientControls,ULONG *MessageNumber);
  439. WINLDAPAPI ULONG LDAPAPI ldap_compare_ext_sW(LDAP *ld,const PWCHAR dn,const PWCHAR Attr,const PWCHAR Value,struct berval *Data,PLDAPControlW *ServerControls,PLDAPControlW *ClientControls);
  440. WINLDAPAPI ULONG LDAPAPI ldap_compare_ext_sA(LDAP *ld,const PCHAR dn,const PCHAR Attr,const PCHAR Value,struct berval *Data,PLDAPControlA *ServerControls,PLDAPControlA *ClientControls);
  441. #if LDAP_UNICODE
  442. #define ldap_compare_ext ldap_compare_extW
  443. #define ldap_compare_ext_s ldap_compare_ext_sW
  444. #else
  445. WINLDAPAPI ULONG LDAPAPI ldap_compare_ext(LDAP *ld,const PCHAR dn,const PCHAR Attr,const PCHAR Value,struct berval *Data,PLDAPControlA *ServerControls,PLDAPControlA *ClientControls,ULONG *MessageNumber);
  446. WINLDAPAPI ULONG LDAPAPI ldap_compare_ext_s(LDAP *ld,const PCHAR dn,const PCHAR Attr,const PCHAR Value,struct berval *Data,PLDAPControlA *ServerControls,PLDAPControlA *ClientControls);
  447. #endif
  448. WINLDAPAPI ULONG LDAPAPI ldap_deleteW(LDAP *ld,const PWCHAR dn);
  449. WINLDAPAPI ULONG LDAPAPI ldap_deleteA(LDAP *ld,const PCHAR dn);
  450. WINLDAPAPI ULONG LDAPAPI ldap_delete_sW(LDAP *ld,const PWCHAR dn);
  451. WINLDAPAPI ULONG LDAPAPI ldap_delete_sA(LDAP *ld,const PCHAR dn);
  452. WINLDAPAPI ULONG LDAPAPI ldap_delete_extW(LDAP *ld,const PWCHAR dn,PLDAPControlW *ServerControls,PLDAPControlW *ClientControls,ULONG *MessageNumber);
  453. WINLDAPAPI ULONG LDAPAPI ldap_delete_extA(LDAP *ld,const PCHAR dn,PLDAPControlA *ServerControls,PLDAPControlA *ClientControls,ULONG *MessageNumber);
  454. WINLDAPAPI ULONG LDAPAPI ldap_delete_ext_sW(LDAP *ld,const PWCHAR dn,PLDAPControlW *ServerControls,PLDAPControlW *ClientControls);
  455. WINLDAPAPI ULONG LDAPAPI ldap_delete_ext_sA(LDAP *ld,const PCHAR dn,PLDAPControlA *ServerControls,PLDAPControlA *ClientControls);
  456. #if LDAP_UNICODE
  457. #define ldap_delete ldap_deleteW
  458. #define ldap_delete_ext ldap_delete_extW
  459. #define ldap_delete_s ldap_delete_sW
  460. #define ldap_delete_ext_s ldap_delete_ext_sW
  461. #else
  462. WINLDAPAPI ULONG LDAPAPI ldap_delete(LDAP *ld,PCHAR dn);
  463. WINLDAPAPI ULONG LDAPAPI ldap_delete_s(LDAP *ld,PCHAR dn);
  464. WINLDAPAPI ULONG LDAPAPI ldap_delete_ext(LDAP *ld,const PCHAR dn,PLDAPControlA *ServerControls,PLDAPControlA *ClientControls,ULONG *MessageNumber);
  465. WINLDAPAPI ULONG LDAPAPI ldap_delete_ext_s(LDAP *ld,const PCHAR dn,PLDAPControlA *ServerControls,PLDAPControlA *ClientControls);
  466. #endif
  467. WINLDAPAPI ULONG LDAPAPI ldap_abandon(LDAP *ld,ULONG msgid);
  468. #define LDAP_MSG_ONE 0
  469. #define LDAP_MSG_ALL 1
  470. #define LDAP_MSG_RECEIVED 2
  471. WINLDAPAPI ULONG LDAPAPI ldap_result(LDAP *ld,ULONG msgid,ULONG all,struct l_timeval *timeout,LDAPMessage **res);
  472. WINLDAPAPI ULONG LDAPAPI ldap_msgfree(LDAPMessage *res);
  473. WINLDAPAPI ULONG LDAPAPI ldap_result2error(LDAP *ld,LDAPMessage *res,ULONG freeit);
  474. WINLDAPAPI ULONG LDAPAPI ldap_parse_resultW (LDAP *Connection,LDAPMessage *ResultMessage,ULONG *ReturnCode,PWCHAR *MatchedDNs,PWCHAR *ErrorMessage,PWCHAR **Referrals,PLDAPControlW **ServerControls,BOOLEAN Freeit);
  475. WINLDAPAPI ULONG LDAPAPI ldap_parse_resultA (LDAP *Connection,LDAPMessage *ResultMessage,ULONG *ReturnCode,PCHAR *MatchedDNs,PCHAR *ErrorMessage,PCHAR **Referrals,PLDAPControlA **ServerControls,BOOLEAN Freeit);
  476. WINLDAPAPI ULONG LDAPAPI ldap_parse_extended_resultA (LDAP *Connection,LDAPMessage *ResultMessage,PCHAR *ResultOID,struct berval **ResultData,BOOLEAN Freeit);
  477. WINLDAPAPI ULONG LDAPAPI ldap_parse_extended_resultW (LDAP *Connection,LDAPMessage *ResultMessage,PWCHAR *ResultOID,struct berval **ResultData,BOOLEAN Freeit);
  478. WINLDAPAPI ULONG LDAPAPI ldap_controls_freeA (LDAPControlA **Controls);
  479. WINLDAPAPI ULONG LDAPAPI ldap_control_freeA (LDAPControlA *Controls);
  480. WINLDAPAPI ULONG LDAPAPI ldap_controls_freeW (LDAPControlW **Control);
  481. WINLDAPAPI ULONG LDAPAPI ldap_control_freeW (LDAPControlW *Control);
  482. WINLDAPAPI ULONG LDAPAPI ldap_free_controlsW (LDAPControlW **Controls);
  483. WINLDAPAPI ULONG LDAPAPI ldap_free_controlsA (LDAPControlA **Controls);
  484. #if LDAP_UNICODE
  485. #define ldap_parse_result ldap_parse_resultW
  486. #define ldap_controls_free ldap_controls_freeW
  487. #define ldap_control_free ldap_control_freeW
  488. #define ldap_free_controls ldap_free_controlsW
  489. #define ldap_parse_extended_result ldap_parse_extended_resultW
  490. #else
  491. #define ldap_parse_extended_result ldap_parse_extended_resultA
  492. WINLDAPAPI ULONG LDAPAPI ldap_parse_result (LDAP *Connection,LDAPMessage *ResultMessage,ULONG *ReturnCode,PCHAR *MatchedDNs,PCHAR *ErrorMessage,PCHAR **Referrals,PLDAPControlA **ServerControls,BOOLEAN Freeit);
  493. WINLDAPAPI ULONG LDAPAPI ldap_controls_free (LDAPControlA **Controls);
  494. WINLDAPAPI ULONG LDAPAPI ldap_control_free (LDAPControlA *Control);
  495. WINLDAPAPI ULONG LDAPAPI ldap_free_controls (LDAPControlA **Controls);
  496. #endif
  497. WINLDAPAPI PWCHAR LDAPAPI ldap_err2stringW(ULONG err);
  498. WINLDAPAPI PCHAR LDAPAPI ldap_err2stringA(ULONG err);
  499. #if LDAP_UNICODE
  500. #define ldap_err2string ldap_err2stringW
  501. #else
  502. WINLDAPAPI PCHAR LDAPAPI ldap_err2string(ULONG err);
  503. #endif
  504. WINLDAPAPI void LDAPAPI ldap_perror(LDAP *ld,const PCHAR msg);
  505. WINLDAPAPI LDAPMessage *LDAPAPI ldap_first_entry(LDAP *ld,LDAPMessage *res);
  506. WINLDAPAPI LDAPMessage *LDAPAPI ldap_next_entry(LDAP *ld,LDAPMessage *entry);
  507. WINLDAPAPI ULONG LDAPAPI ldap_count_entries(LDAP *ld,LDAPMessage *res);
  508. typedef struct berelement {
  509. PCHAR opaque;
  510. } BerElement;
  511. #define NULLBER ((BerElement *) 0)
  512. WINLDAPAPI PWCHAR LDAPAPI ldap_first_attributeW(LDAP *ld,LDAPMessage *entry,BerElement **ptr);
  513. WINLDAPAPI PCHAR LDAPAPI ldap_first_attributeA(LDAP *ld,LDAPMessage *entry,BerElement **ptr);
  514. #if LDAP_UNICODE
  515. #define ldap_first_attribute ldap_first_attributeW
  516. #else
  517. WINLDAPAPI PCHAR LDAPAPI ldap_first_attribute(LDAP *ld,LDAPMessage *entry,BerElement **ptr);
  518. #endif
  519. WINLDAPAPI PWCHAR LDAPAPI ldap_next_attributeW(LDAP *ld,LDAPMessage *entry,BerElement *ptr);
  520. WINLDAPAPI PCHAR LDAPAPI ldap_next_attributeA(LDAP *ld,LDAPMessage *entry,BerElement *ptr);
  521. #if LDAP_UNICODE
  522. #define ldap_next_attribute ldap_next_attributeW
  523. #else
  524. WINLDAPAPI PCHAR LDAPAPI ldap_next_attribute(LDAP *ld,LDAPMessage *entry,BerElement *ptr);
  525. #endif
  526. WINLDAPAPI PWCHAR *LDAPAPI ldap_get_valuesW(LDAP *ld,LDAPMessage *entry,const PWCHAR attr);
  527. WINLDAPAPI PCHAR *LDAPAPI ldap_get_valuesA(LDAP *ld,LDAPMessage *entry,const PCHAR attr);
  528. #if LDAP_UNICODE
  529. #define ldap_get_values ldap_get_valuesW
  530. #else
  531. WINLDAPAPI PCHAR *LDAPAPI ldap_get_values(LDAP *ld,LDAPMessage *entry,const PCHAR attr);
  532. #endif
  533. WINLDAPAPI struct berval **LDAPAPI ldap_get_values_lenW (LDAP *ExternalHandle,LDAPMessage *Message,const PWCHAR attr);
  534. WINLDAPAPI struct berval **LDAPAPI ldap_get_values_lenA (LDAP *ExternalHandle,LDAPMessage *Message,const PCHAR attr);
  535. #if LDAP_UNICODE
  536. #define ldap_get_values_len ldap_get_values_lenW
  537. #else
  538. WINLDAPAPI struct berval **LDAPAPI ldap_get_values_len (LDAP *ExternalHandle,LDAPMessage *Message,const PCHAR attr);
  539. #endif
  540. WINLDAPAPI ULONG LDAPAPI ldap_count_valuesW(PWCHAR *vals);
  541. WINLDAPAPI ULONG LDAPAPI ldap_count_valuesA(PCHAR *vals);
  542. #if LDAP_UNICODE
  543. #define ldap_count_values ldap_count_valuesW
  544. #else
  545. WINLDAPAPI ULONG LDAPAPI ldap_count_values(PCHAR *vals);
  546. #endif
  547. WINLDAPAPI ULONG LDAPAPI ldap_count_values_len(struct berval **vals);
  548. WINLDAPAPI ULONG LDAPAPI ldap_value_freeW(PWCHAR *vals);
  549. WINLDAPAPI ULONG LDAPAPI ldap_value_freeA(PCHAR *vals);
  550. #if LDAP_UNICODE
  551. #define ldap_value_free ldap_value_freeW
  552. #else
  553. WINLDAPAPI ULONG LDAPAPI ldap_value_free(PCHAR *vals);
  554. #endif
  555. WINLDAPAPI ULONG LDAPAPI ldap_value_free_len(struct berval **vals);
  556. WINLDAPAPI PWCHAR LDAPAPI ldap_get_dnW(LDAP *ld,LDAPMessage *entry);
  557. WINLDAPAPI PCHAR LDAPAPI ldap_get_dnA(LDAP *ld,LDAPMessage *entry);
  558. #if LDAP_UNICODE
  559. #define ldap_get_dn ldap_get_dnW
  560. #else
  561. WINLDAPAPI PCHAR LDAPAPI ldap_get_dn(LDAP *ld,LDAPMessage *entry);
  562. #endif
  563. WINLDAPAPI PWCHAR *LDAPAPI ldap_explode_dnW(const PWCHAR dn,ULONG notypes);
  564. WINLDAPAPI PCHAR *LDAPAPI ldap_explode_dnA(const PCHAR dn,ULONG notypes);
  565. #if LDAP_UNICODE
  566. #define ldap_explode_dn ldap_explode_dnW
  567. #else
  568. WINLDAPAPI PCHAR *LDAPAPI ldap_explode_dn(const PCHAR dn,ULONG notypes);
  569. #endif
  570. WINLDAPAPI PWCHAR LDAPAPI ldap_dn2ufnW(const PWCHAR dn);
  571. WINLDAPAPI PCHAR LDAPAPI ldap_dn2ufnA(const PCHAR dn);
  572. #if LDAP_UNICODE
  573. #define ldap_dn2ufn ldap_dn2ufnW
  574. #else
  575. WINLDAPAPI PCHAR LDAPAPI ldap_dn2ufn(const PCHAR dn);
  576. #endif
  577. WINLDAPAPI VOID LDAPAPI ldap_memfreeW(PWCHAR Block);
  578. WINLDAPAPI VOID LDAPAPI ldap_memfreeA(PCHAR Block);
  579. WINLDAPAPI VOID LDAPAPI ber_bvfree(struct berval *bv);
  580. #if LDAP_UNICODE
  581. #define ldap_memfree ldap_memfreeW
  582. #else
  583. WINLDAPAPI VOID LDAPAPI ldap_memfree(PCHAR Block);
  584. #endif
  585. WINLDAPAPI ULONG LDAPAPI ldap_ufn2dnW (const PWCHAR ufn,PWCHAR *pDn);
  586. WINLDAPAPI ULONG LDAPAPI ldap_ufn2dnA (const PCHAR ufn,PCHAR *pDn);
  587. #if LDAP_UNICODE
  588. #define ldap_ufn2dn ldap_ufn2dnW
  589. #else
  590. WINLDAPAPI ULONG LDAPAPI ldap_ufn2dn (const PCHAR ufn,PCHAR *pDn);
  591. #endif
  592. #define LBER_USE_DER 0x01
  593. #define LBER_USE_INDEFINITE_LEN 0x02
  594. #define LBER_TRANSLATE_STRINGS 0x04
  595. #define LAPI_MAJOR_VER1 1
  596. #define LAPI_MINOR_VER1 1
  597. typedef struct ldap_version_info {
  598. ULONG lv_size;
  599. ULONG lv_major;
  600. ULONG lv_minor;
  601. } LDAP_VERSION_INFO,*PLDAP_VERSION_INFO;
  602. WINLDAPAPI ULONG LDAPAPI ldap_startup (PLDAP_VERSION_INFO version,HANDLE *Instance);
  603. #define LDAP_API_INFO_VERSION 1
  604. #define LDAP_API_VERSION 2004
  605. #define LDAP_VERSION_MIN 2
  606. #define LDAP_VERSION_MAX 3
  607. #define LDAP_VENDOR_NAME "Microsoft Corporation."
  608. #define LDAP_VENDOR_NAME_W L"Microsoft Corporation."
  609. #define LDAP_VENDOR_VERSION 510
  610. typedef struct ldapapiinfoA {
  611. int ldapai_info_version;
  612. int ldapai_api_version;
  613. int ldapai_protocol_version;
  614. char **ldapai_extensions;
  615. char *ldapai_vendor_name;
  616. int ldapai_vendor_version;
  617. } LDAPAPIInfoA;
  618. typedef struct ldapapiinfoW {
  619. int ldapai_info_version;
  620. int ldapai_api_version;
  621. int ldapai_protocol_version;
  622. PWCHAR *ldapai_extensions;
  623. PWCHAR ldapai_vendor_name;
  624. int ldapai_vendor_version;
  625. } LDAPAPIInfoW;
  626. #define LDAP_FEATURE_INFO_VERSION 1
  627. typedef struct ldap_apifeature_infoA {
  628. int ldapaif_info_version;
  629. char *ldapaif_name;
  630. int ldapaif_version;
  631. } LDAPAPIFeatureInfoA;
  632. typedef struct ldap_apifeature_infoW {
  633. int ldapaif_info_version;
  634. PWCHAR ldapaif_name;
  635. int ldapaif_version;
  636. } LDAPAPIFeatureInfoW;
  637. #if LDAP_UNICODE
  638. #define LDAPAPIInfo LDAPAPIInfoW
  639. #define LDAPAPIFeatureInfo LDAPAPIFeatureInfoW
  640. #else
  641. #define LDAPAPIInfo LDAPAPIInfoA
  642. #define LDAPAPIFeatureInfo LDAPAPIFeatureInfoA
  643. #endif
  644. WINLDAPAPI ULONG LDAPAPI ldap_cleanup (HANDLE hInstance);
  645. WINLDAPAPI ULONG LDAPAPI ldap_escape_filter_elementW (PCHAR sourceFilterElement,ULONG sourceLength,PWCHAR destFilterElement,ULONG destLength);
  646. WINLDAPAPI ULONG LDAPAPI ldap_escape_filter_elementA (PCHAR sourceFilterElement,ULONG sourceLength,PCHAR destFilterElement,ULONG destLength);
  647. #if LDAP_UNICODE
  648. #define ldap_escape_filter_element ldap_escape_filter_elementW
  649. #else
  650. WINLDAPAPI ULONG LDAPAPI ldap_escape_filter_element (PCHAR sourceFilterElement,ULONG sourceLength,PCHAR destFilterElement,ULONG destLength);
  651. #endif
  652. WINLDAPAPI ULONG LDAPAPI ldap_set_dbg_flags(ULONG NewFlags);
  653. typedef ULONG (LDAPAPI *DBGPRINT)(PCH Format,...);
  654. WINLDAPAPI VOID LDAPAPI ldap_set_dbg_routine(DBGPRINT DebugPrintRoutine);
  655. WINLDAPAPI int LDAPAPI LdapUTF8ToUnicode(LPCSTR lpSrcStr,int cchSrc,LPWSTR lpDestStr,int cchDest);
  656. WINLDAPAPI int LDAPAPI LdapUnicodeToUTF8(LPCWSTR lpSrcStr,int cchSrc,LPSTR lpDestStr,int cchDest);
  657. #define LDAP_SERVER_SORT_OID "1.2.840.113556.1.4.473"
  658. #define LDAP_SERVER_SORT_OID_W L"1.2.840.113556.1.4.473"
  659. #define LDAP_SERVER_RESP_SORT_OID "1.2.840.113556.1.4.474"
  660. #define LDAP_SERVER_RESP_SORT_OID_W L"1.2.840.113556.1.4.474"
  661. typedef struct ldapsearch LDAPSearch,*PLDAPSearch;
  662. typedef struct ldapsortkeyW {
  663. PWCHAR sk_attrtype;
  664. PWCHAR sk_matchruleoid;
  665. BOOLEAN sk_reverseorder;
  666. } LDAPSortKeyW,*PLDAPSortKeyW;
  667. typedef struct ldapsortkeyA {
  668. PCHAR sk_attrtype;
  669. PCHAR sk_matchruleoid;
  670. BOOLEAN sk_reverseorder;
  671. } LDAPSortKeyA,*PLDAPSortKeyA;
  672. #if LDAP_UNICODE
  673. #define LDAPSortKey LDAPSortKeyW
  674. #define PLDAPSortKey PLDAPSortKeyW
  675. #else
  676. #define LDAPSortKey LDAPSortKeyA
  677. #define PLDAPSortKey PLDAPSortKeyA
  678. #endif
  679. WINLDAPAPI ULONG LDAPAPI ldap_create_sort_controlA (PLDAP ExternalHandle,PLDAPSortKeyA *SortKeys,UCHAR IsCritical,PLDAPControlA *Control);
  680. WINLDAPAPI ULONG LDAPAPI ldap_create_sort_controlW (PLDAP ExternalHandle,PLDAPSortKeyW *SortKeys,UCHAR IsCritical,PLDAPControlW *Control);
  681. WINLDAPAPI ULONG LDAPAPI ldap_parse_sort_controlA (PLDAP ExternalHandle,PLDAPControlA *Control,ULONG *Result,PCHAR *Attribute);
  682. WINLDAPAPI ULONG LDAPAPI ldap_parse_sort_controlW (PLDAP ExternalHandle,PLDAPControlW *Control,ULONG *Result,PWCHAR *Attribute);
  683. #if LDAP_UNICODE
  684. #define ldap_create_sort_control ldap_create_sort_controlW
  685. #define ldap_parse_sort_control ldap_parse_sort_controlW
  686. #else
  687. WINLDAPAPI ULONG LDAPAPI ldap_create_sort_control (PLDAP ExternalHandle,PLDAPSortKeyA *SortKeys,UCHAR IsCritical,PLDAPControlA *Control);
  688. WINLDAPAPI ULONG LDAPAPI ldap_parse_sort_control (PLDAP ExternalHandle,PLDAPControlA *Control,ULONG *Result,PCHAR *Attribute);
  689. #endif
  690. WINLDAPAPI ULONG LDAPAPI ldap_encode_sort_controlW (PLDAP ExternalHandle,PLDAPSortKeyW *SortKeys,PLDAPControlW Control,BOOLEAN Criticality);
  691. WINLDAPAPI ULONG LDAPAPI ldap_encode_sort_controlA (PLDAP ExternalHandle,PLDAPSortKeyA *SortKeys,PLDAPControlA Control,BOOLEAN Criticality);
  692. #if LDAP_UNICODE
  693. #define ldap_encode_sort_control ldap_encode_sort_controlW
  694. #else
  695. WINLDAPAPI ULONG LDAPAPI ldap_encode_sort_control (PLDAP ExternalHandle,PLDAPSortKeyA *SortKeys,PLDAPControlA Control,BOOLEAN Criticality);
  696. #endif
  697. WINLDAPAPI ULONG LDAPAPI ldap_create_page_controlW(PLDAP ExternalHandle,ULONG PageSize,struct berval *Cookie,UCHAR IsCritical,PLDAPControlW *Control);
  698. WINLDAPAPI ULONG LDAPAPI ldap_create_page_controlA(PLDAP ExternalHandle,ULONG PageSize,struct berval *Cookie,UCHAR IsCritical,PLDAPControlA *Control);
  699. WINLDAPAPI ULONG LDAPAPI ldap_parse_page_controlW (PLDAP ExternalHandle,PLDAPControlW *ServerControls,ULONG *TotalCount,struct berval **Cookie);
  700. WINLDAPAPI ULONG LDAPAPI ldap_parse_page_controlA (PLDAP ExternalHandle,PLDAPControlA *ServerControls,ULONG *TotalCount,struct berval **Cookie);
  701. #if LDAP_UNICODE
  702. #define ldap_create_page_control ldap_create_page_controlW
  703. #define ldap_parse_page_control ldap_parse_page_controlW
  704. #else
  705. WINLDAPAPI ULONG LDAPAPI ldap_create_page_control(PLDAP ExternalHandle,ULONG PageSize,struct berval *Cookie,UCHAR IsCritical,PLDAPControlA *Control);
  706. WINLDAPAPI ULONG LDAPAPI ldap_parse_page_control (PLDAP ExternalHandle,PLDAPControlA *ServerControls,ULONG *TotalCount,struct berval **Cookie);
  707. #endif
  708. #define LDAP_PAGED_RESULT_OID_STRING "1.2.840.113556.1.4.319"
  709. #define LDAP_PAGED_RESULT_OID_STRING_W L"1.2.840.113556.1.4.319"
  710. WINLDAPAPI PLDAPSearch LDAPAPI ldap_search_init_pageW(PLDAP ExternalHandle,const PWCHAR DistinguishedName,ULONG ScopeOfSearch,const PWCHAR SearchFilter,PWCHAR AttributeList[],ULONG AttributesOnly,PLDAPControlW *ServerControls,PLDAPControlW *ClientControls,ULONG PageTimeLimit,ULONG TotalSizeLimit,PLDAPSortKeyW *SortKeys);
  711. WINLDAPAPI PLDAPSearch LDAPAPI ldap_search_init_pageA(PLDAP ExternalHandle,const PCHAR DistinguishedName,ULONG ScopeOfSearch,const PCHAR SearchFilter,PCHAR AttributeList[],ULONG AttributesOnly,PLDAPControlA *ServerControls,PLDAPControlA *ClientControls,ULONG PageTimeLimit,ULONG TotalSizeLimit,PLDAPSortKeyA *SortKeys);
  712. #if LDAP_UNICODE
  713. #define ldap_search_init_page ldap_search_init_pageW
  714. #else
  715. WINLDAPAPI PLDAPSearch LDAPAPI ldap_search_init_page(PLDAP ExternalHandle,const PCHAR DistinguishedName,ULONG ScopeOfSearch,const PCHAR SearchFilter,PCHAR AttributeList[],ULONG AttributesOnly,PLDAPControl *ServerControls,PLDAPControl *ClientControls,ULONG PageTimeLimit,ULONG TotalSizeLimit,PLDAPSortKey *SortKeys);
  716. #endif
  717. WINLDAPAPI ULONG LDAPAPI ldap_get_next_page(PLDAP ExternalHandle,PLDAPSearch SearchHandle,ULONG PageSize,ULONG *MessageNumber);
  718. WINLDAPAPI ULONG LDAPAPI ldap_get_next_page_s(PLDAP ExternalHandle,PLDAPSearch SearchHandle,struct l_timeval *timeout,ULONG PageSize,ULONG *TotalCount,LDAPMessage **Results);
  719. WINLDAPAPI ULONG LDAPAPI ldap_get_paged_count(PLDAP ExternalHandle,PLDAPSearch SearchBlock,ULONG *TotalCount,PLDAPMessage Results);
  720. WINLDAPAPI ULONG LDAPAPI ldap_search_abandon_page(PLDAP ExternalHandle,PLDAPSearch SearchBlock);
  721. #define LDAP_CONTROL_VLVREQUEST "2.16.840.1.113730.3.4.9"
  722. #define LDAP_CONTROL_VLVREQUEST_W L"2.16.840.1.113730.3.4.9"
  723. #define LDAP_CONTROL_VLVRESPONSE "2.16.840.1.113730.3.4.10"
  724. #define LDAP_CONTROL_VLVRESPONSE_W L"2.16.840.1.113730.3.4.10"
  725. #define LDAP_API_FEATURE_VIRTUAL_LIST_VIEW 1001
  726. #define LDAP_VLVINFO_VERSION 1
  727. typedef struct ldapvlvinfo {
  728. int ldvlv_version;
  729. ULONG ldvlv_before_count;
  730. ULONG ldvlv_after_count;
  731. ULONG ldvlv_offset;
  732. ULONG ldvlv_count;
  733. PBERVAL ldvlv_attrvalue;
  734. PBERVAL ldvlv_context;
  735. VOID *ldvlv_extradata;
  736. } LDAPVLVInfo,*PLDAPVLVInfo;
  737. WINLDAPAPI INT LDAPAPI ldap_create_vlv_controlW (PLDAP ExternalHandle,PLDAPVLVInfo VlvInfo,UCHAR IsCritical,PLDAPControlW *Control);
  738. WINLDAPAPI INT LDAPAPI ldap_create_vlv_controlA (PLDAP ExternalHandle,PLDAPVLVInfo VlvInfo,UCHAR IsCritical,PLDAPControlA *Control);
  739. WINLDAPAPI INT LDAPAPI ldap_parse_vlv_controlW (PLDAP ExternalHandle,PLDAPControlW *Control,PULONG TargetPos,PULONG ListCount,PBERVAL *Context,PINT ErrCode);
  740. WINLDAPAPI INT LDAPAPI ldap_parse_vlv_controlA (PLDAP ExternalHandle,PLDAPControlA *Control,PULONG TargetPos,PULONG ListCount,PBERVAL *Context,PINT ErrCode);
  741. #if LDAP_UNICODE
  742. #define ldap_create_vlv_control ldap_create_vlv_controlW
  743. #define ldap_parse_vlv_control ldap_parse_vlv_controlW
  744. #else
  745. #define ldap_create_vlv_control ldap_create_vlv_controlA
  746. #define ldap_parse_vlv_control ldap_parse_vlv_controlA
  747. #endif
  748. #define LDAP_START_TLS_OID "1.3.6.1.4.1.1466.20037"
  749. #define LDAP_START_TLS_OID_W L"1.3.6.1.4.1.1466.20037"
  750. WINLDAPAPI ULONG LDAPAPI ldap_start_tls_sW(PLDAP ExternalHandle,PULONG ServerReturnValue,LDAPMessage **result,PLDAPControlW *ServerControls,PLDAPControlW *ClientControls);
  751. WINLDAPAPI ULONG LDAPAPI ldap_start_tls_sA(PLDAP ExternalHandle,PULONG ServerReturnValue,LDAPMessage **result,PLDAPControlA *ServerControls,PLDAPControlA *ClientControls);
  752. WINLDAPAPI BOOLEAN LDAPAPI ldap_stop_tls_s(PLDAP ExternalHandle);
  753. #if LDAP_UNICODE
  754. #define ldap_start_tls_s ldap_start_tls_sW
  755. #else
  756. #define ldap_start_tls_s ldap_start_tls_sA
  757. #endif
  758. #define LDAP_TTL_EXTENDED_OP_OID "1.3.6.1.4.1.1466.101.119.1"
  759. #define LDAP_TTL_EXTENDED_OP_OID_W L"1.3.6.1.4.1.1466.101.119.1"
  760. WINLDAPAPI LDAPMessage *LDAPAPI ldap_first_reference(LDAP *ld,LDAPMessage *res);
  761. WINLDAPAPI LDAPMessage *LDAPAPI ldap_next_reference(LDAP *ld,LDAPMessage *entry);
  762. WINLDAPAPI ULONG LDAPAPI ldap_count_references(LDAP *ld,LDAPMessage *res);
  763. WINLDAPAPI ULONG LDAPAPI ldap_parse_referenceW (LDAP *Connection,LDAPMessage *ResultMessage,PWCHAR **Referrals);
  764. WINLDAPAPI ULONG LDAPAPI ldap_parse_referenceA (LDAP *Connection,LDAPMessage *ResultMessage,PCHAR **Referrals);
  765. #if LDAP_UNICODE
  766. #define ldap_parse_reference ldap_parse_referenceW
  767. #else
  768. WINLDAPAPI ULONG LDAPAPI ldap_parse_reference (LDAP *Connection,LDAPMessage *ResultMessage,PCHAR **Referrals);
  769. #endif
  770. WINLDAPAPI ULONG LDAPAPI ldap_extended_operationW(LDAP *ld,const PWCHAR Oid,struct berval *Data,PLDAPControlW *ServerControls,PLDAPControlW *ClientControls,ULONG *MessageNumber);
  771. WINLDAPAPI ULONG LDAPAPI ldap_extended_operationA(LDAP *ld,const PCHAR Oid,struct berval *Data,PLDAPControlA *ServerControls,PLDAPControlA *ClientControls,ULONG *MessageNumber);
  772. WINLDAPAPI ULONG LDAPAPI ldap_extended_operation_sA (LDAP *ExternalHandle,PCHAR Oid,struct berval *Data,PLDAPControlA *ServerControls,PLDAPControlA *ClientControls,PCHAR *ReturnedOid,struct berval **ReturnedData);
  773. WINLDAPAPI ULONG LDAPAPI ldap_extended_operation_sW (LDAP *ExternalHandle,PWCHAR Oid,struct berval *Data,PLDAPControlW *ServerControls,PLDAPControlW *ClientControls,PWCHAR *ReturnedOid,struct berval **ReturnedData);
  774. #if LDAP_UNICODE
  775. #define ldap_extended_operation ldap_extended_operationW
  776. #define ldap_extended_operation_s ldap_extended_operation_sW
  777. #else
  778. WINLDAPAPI ULONG LDAPAPI ldap_extended_operation(LDAP *ld,const PCHAR Oid,struct berval *Data,PLDAPControlA *ServerControls,PLDAPControlA *ClientControls,ULONG *MessageNumber);
  779. #define ldap_extended_operation_s ldap_extended_operation_sA
  780. #endif
  781. WINLDAPAPI ULONG LDAPAPI ldap_close_extended_op(LDAP *ld,ULONG MessageNumber);
  782. #define LDAP_OPT_REFERRAL_CALLBACK 0x70
  783. typedef ULONG (LDAPAPI QUERYFORCONNECTION)(PLDAP PrimaryConnection,PLDAP ReferralFromConnection,PWCHAR NewDN,PCHAR HostName,ULONG PortNumber,PVOID SecAuthIdentity,PVOID CurrentUserToken,PLDAP *ConnectionToUse);
  784. typedef BOOLEAN (LDAPAPI NOTIFYOFNEWCONNECTION) (PLDAP PrimaryConnection,PLDAP ReferralFromConnection,PWCHAR NewDN,PCHAR HostName,PLDAP NewConnection,ULONG PortNumber,PVOID SecAuthIdentity,PVOID CurrentUser,ULONG ErrorCodeFromBind);
  785. typedef ULONG (LDAPAPI DEREFERENCECONNECTION)(PLDAP PrimaryConnection,PLDAP ConnectionToDereference);
  786. typedef struct LdapReferralCallback {
  787. ULONG SizeOfCallbacks;
  788. QUERYFORCONNECTION *QueryForConnection;
  789. NOTIFYOFNEWCONNECTION *NotifyRoutine;
  790. DEREFERENCECONNECTION *DereferenceRoutine;
  791. } LDAP_REFERRAL_CALLBACK,*PLDAP_REFERRAL_CALLBACK;
  792. WINLDAPAPI ULONG LDAPAPI LdapGetLastError(VOID);
  793. WINLDAPAPI ULONG LDAPAPI LdapMapErrorToWin32(ULONG LdapError);
  794. #define LDAP_OPT_CLIENT_CERTIFICATE 0x80
  795. #define LDAP_OPT_SERVER_CERTIFICATE 0x81
  796. #define LDAP_OPT_REF_DEREF_CONN_PER_MSG 0x94
  797. typedef BOOLEAN (LDAPAPI QUERYCLIENTCERT) (PLDAP Connection,PSecPkgContext_IssuerListInfoEx trusted_CAs,PCCERT_CONTEXT *ppCertificate);
  798. typedef BOOLEAN (LDAPAPI VERIFYSERVERCERT) (PLDAP Connection,PCCERT_CONTEXT pServerCert);
  799. WINLDAPAPI LDAP *LDAPAPI ldap_conn_from_msg (LDAP *PrimaryConn,LDAPMessage *res);
  800. #ifdef __cplusplus
  801. }
  802. #endif
  803. #endif