Leaked source code of windows server 2003
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

619 lines
17 KiB

  1. /*++
  2. Copyright (c) 1994 Microsoft Corporation
  3. Module Name :
  4. globals.c
  5. Abstract:
  6. Defines global variables for the common tcpsvcs.dll
  7. ( It is defined separately because the debug variable should be
  8. "C" variable.)
  9. Author:
  10. Murali R. Krishnan ( MuraliK ) 18-Nov-1994
  11. Revision History:
  12. MuraliK 21-Feb-1995 Added Debugging Variables definitions
  13. --*/
  14. #include <tcpdllp.hxx>
  15. #pragma hdrstop
  16. //
  17. // private routines
  18. //
  19. BOOL
  20. DummySvclocFn(
  21. VOID
  22. );
  23. BOOL
  24. LoadNTSecurityEntryPoints(
  25. VOID
  26. );
  27. BOOL
  28. GetSecurityDllEntryPoints(
  29. IN HINSTANCE hInstance
  30. );
  31. BOOL
  32. GetLogonDllEntryPoints(
  33. IN HINSTANCE hInstance
  34. );
  35. //
  36. // Declare all the debugging related variables
  37. //
  38. DECLARE_DEBUG_VARIABLE();
  39. DECLARE_DEBUG_PRINTS_OBJECT();
  40. //
  41. // inetsloc entry points
  42. //
  43. HINSTANCE g_hSvcLocDll = NULL;
  44. INET_REGISTER_SVC_FN pfnInetRegisterSvc = NULL;
  45. INET_DEREGISTER_SVC_FN pfnInetDeregisterSvc = NULL;
  46. INET_INIT_CONTROL_SVC_FN pfnInitSvcLoc = NULL;
  47. INET_INIT_CONTROL_SVC_FN pfnTerminateSvcLoc = NULL;
  48. // UNDONE remove? schannel no longer needed???
  49. //
  50. // schannel entrypoints
  51. //
  52. HINSTANCE g_hSchannel = NULL;
  53. SSL_CRACK_CERTIFICATE_FN fnCrackCert = NULL;
  54. SSL_FREE_CERTIFICATE_FN fnFreeCert = NULL;
  55. //
  56. // crypt32 entrypoints
  57. //
  58. HINSTANCE g_hCrypt32Dll = NULL;
  59. CRYPT32_FREE_CERTCTXT_FN pfnFreeCertCtxt = NULL;
  60. CRYPT32_GET_CERTCTXT_PROP_FN pfnGetCertCtxtProp = NULL;
  61. CRYPT32_CERT_VERIFY_REVOCATION_FN pfnCertVerifyRevocation = NULL;
  62. CRYPT32_CERT_VERIFY_TIME_VALIDITY pfnCertVerifyTimeValidity = NULL;
  63. CRYPT32_CERT_NAME_TO_STR_A_FN pfnCertNameToStrA = NULL;
  64. //
  65. // sspi entrypoints
  66. //
  67. HINSTANCE g_hSecurityDll = NULL;
  68. ACCEPT_SECURITY_CONTEXT_FN pfnAcceptSecurityContext = NULL;
  69. ACQUIRE_CREDENTIALS_HANDLE_FN pfnAcquireCredentialsHandle = NULL;
  70. COMPLETE_AUTH_TOKEN_FN pfnCompleteAuthToken = NULL;
  71. DELETE_SECURITY_CONTEXT_FN pfnDeleteSecurityContext = NULL;
  72. ENUMERATE_SECURITY_PACKAGES_FN pfnEnumerateSecurityPackages = NULL;
  73. IMPERSONATE_SECURITY_CONTEXT_FN pfnImpersonateSecurityContext = NULL;
  74. INITIALIZE_SECURITY_CONTEXT_FN pfnInitializeSecurityContext = NULL;
  75. FREE_CONTEXT_BUFFER_FN pfnFreeContextBuffer = NULL;
  76. FREE_CREDENTIALS_HANDLE_FN pfnFreeCredentialsHandle = NULL;
  77. QUERY_CONTEXT_ATTRIBUTES_FN pfnQueryContextAttributes = NULL;
  78. QUERY_SECURITY_CONTEXT_TOKEN_FN pfnQuerySecurityContextToken = NULL;
  79. QUERY_SECURITY_PACKAGE_INFO_FN pfnQuerySecurityPackageInfo = NULL;
  80. REVERT_SECURITY_CONTEXT_FN pfnRevertSecurityContext = NULL;
  81. //
  82. // logon entry points
  83. //
  84. LOGON32_INITIALIZE_FN pfnLogon32Initialize = NULL;
  85. LOGON_NET_USER_A_FN pfnLogonNetUserA = NULL;
  86. LOGON_NET_USER_W_FN pfnLogonNetUserW = NULL;
  87. NET_USER_COOKIE_A_FN pfnNetUserCookieA = NULL;
  88. LOGON_DIGEST_USER_A_FN pfnLogonDigestUserA = NULL;
  89. GET_DEFAULT_DOMAIN_NAME_FN pfnGetDefaultDomainName = NULL;
  90. //
  91. // advapi32
  92. //
  93. DUPLICATE_TOKEN_EX_FN pfnDuplicateTokenEx = NULL;
  94. LSA_OPEN_POLICY_FN pfnLsaOpenPolicy = NULL;
  95. LSA_RETRIEVE_PRIVATE_DATA_FN pfnLsaRetrievePrivateData = NULL;
  96. LSA_STORE_PRIVATE_DATA_FN pfnLsaStorePrivateData = NULL;
  97. LSA_FREE_MEMORY_FN pfnLsaFreeMemory = NULL;
  98. LSA_CLOSE_FN pfnLsaClose = NULL;
  99. LSA_NT_STATUS_TO_WIN_ERROR_FN pfnLsaNtStatusToWinError = NULL;
  100. //
  101. // kernel32
  102. //
  103. #if _WIN64
  104. LONG
  105. INET_InterlockedIncrement(
  106. IN OUT LPLONG lpAddend
  107. )
  108. {
  109. return InterlockedIncrement(lpAddend);
  110. }
  111. LONG
  112. INET_InterlockedCompareExchange (
  113. IN OUT PLONG Destination,
  114. IN LONG ExChange,
  115. IN LONG Comperand
  116. )
  117. {
  118. return InterlockedCompareExchange(Destination, ExChange, Comperand);
  119. }
  120. LONG
  121. INET_InterlockedExchangeAdd(
  122. IN OUT LPLONG Addend,
  123. IN LONG Value
  124. )
  125. {
  126. return InterlockedExchangeAdd(Addend, Value);
  127. }
  128. LONG
  129. __cdecl
  130. INET_InterlockedDecrement(
  131. IN OUT LPLONG lpAddend
  132. )
  133. {
  134. return InterlockedDecrement(lpAddend);
  135. }
  136. INTERLOCKED_EXCHANGE_ADD_FN pfnInterlockedExchangeAdd = INET_InterlockedExchangeAdd;
  137. INTERLOCKED_COMPARE_EXCHANGE_FN pfnInterlockedCompareExchange = (INTERLOCKED_COMPARE_EXCHANGE_FN)INET_InterlockedCompareExchange;
  138. INTERLOCKED_INCREMENT_FN pfnInterlockedIncrement = INET_InterlockedIncrement;
  139. INTERLOCKED_DECREMENT_FN pfnInterlockedDecrement = INET_InterlockedDecrement;
  140. READ_DIR_CHANGES_W_FN pfnReadDirChangesW = ReadDirectoryChangesW;
  141. #else
  142. INTERLOCKED_EXCHANGE_ADD_FN pfnInterlockedExchangeAdd = NULL;
  143. INTERLOCKED_COMPARE_EXCHANGE_FN pfnInterlockedCompareExchange = NULL;
  144. INTERLOCKED_INCREMENT_FN pfnInterlockedIncrement = NULL;
  145. INTERLOCKED_DECREMENT_FN pfnInterlockedDecrement = NULL;
  146. READ_DIR_CHANGES_W_FN pfnReadDirChangesW;
  147. #endif
  148. //
  149. // lonsi
  150. //
  151. HINSTANCE g_hLonsiNT = NULL;
  152. //
  153. // rpcref
  154. //
  155. HINSTANCE g_hRpcRef = NULL;
  156. PFN_INETINFO_START_RPC_SERVER pfnInetinfoStartRpcServer = NULL;
  157. PFN_INETINFO_STOP_RPC_SERVER pfnInetinfoStopRpcServer = NULL;
  158. BOOL
  159. GetDynamicEntryPoints(
  160. VOID
  161. )
  162. {
  163. HINSTANCE hTemp;
  164. DBG_ASSERT(IISIsValidPlatform());
  165. //
  166. // advapi32
  167. //
  168. hTemp = LoadLibrary("advapi32.dll");
  169. if ( hTemp != NULL ) {
  170. pfnDuplicateTokenEx = (DUPLICATE_TOKEN_EX_FN)
  171. GetProcAddress(hTemp,"DuplicateTokenEx");
  172. pfnLsaOpenPolicy = (LSA_OPEN_POLICY_FN)
  173. GetProcAddress(hTemp,"LsaOpenPolicy");
  174. pfnLsaRetrievePrivateData = (LSA_RETRIEVE_PRIVATE_DATA_FN)
  175. GetProcAddress(hTemp,"LsaRetrievePrivateData");
  176. pfnLsaStorePrivateData = (LSA_STORE_PRIVATE_DATA_FN)
  177. GetProcAddress(hTemp,"LsaStorePrivateData");
  178. pfnLsaFreeMemory = (LSA_FREE_MEMORY_FN)
  179. GetProcAddress(hTemp,"LsaFreeMemory");
  180. pfnLsaClose = (LSA_CLOSE_FN)
  181. GetProcAddress(hTemp,"LsaClose");
  182. pfnLsaNtStatusToWinError = (LSA_NT_STATUS_TO_WIN_ERROR_FN)
  183. GetProcAddress(hTemp,"LsaNtStatusToWinError");
  184. FreeLibrary(hTemp);
  185. if ( !pfnDuplicateTokenEx ||
  186. !pfnLsaOpenPolicy ||
  187. !pfnLsaRetrievePrivateData ||
  188. !pfnLsaFreeMemory ||
  189. !pfnLsaClose ||
  190. !pfnLsaNtStatusToWinError ) {
  191. DBGPRINTF((DBG_CONTEXT,
  192. "Unable to obtain an advapi32 entry point\n"));
  193. goto error_exit;
  194. }
  195. } else {
  196. DBGPRINTF((DBG_CONTEXT, "Error %d loading advapi32.dll\n",
  197. GetLastError() ));
  198. goto error_exit;
  199. }
  200. //
  201. // kernel32
  202. //
  203. #ifndef _WIN64
  204. hTemp = LoadLibrary("kernel32.dll");
  205. if ( hTemp != NULL ) {
  206. pfnInterlockedExchangeAdd = (INTERLOCKED_EXCHANGE_ADD_FN)
  207. GetProcAddress(hTemp,"InterlockedExchangeAdd");
  208. pfnInterlockedCompareExchange = (INTERLOCKED_COMPARE_EXCHANGE_FN)
  209. GetProcAddress(hTemp,"InterlockedCompareExchange");
  210. pfnInterlockedIncrement = (INTERLOCKED_INCREMENT_FN)
  211. GetProcAddress(hTemp,"InterlockedIncrement");
  212. pfnInterlockedDecrement = (INTERLOCKED_DECREMENT_FN)
  213. GetProcAddress(hTemp,"InterlockedDecrement");
  214. pfnReadDirChangesW = (READ_DIR_CHANGES_W_FN)
  215. GetProcAddress(hTemp,"ReadDirectoryChangesW");
  216. FreeLibrary(hTemp);
  217. if ( !pfnInterlockedExchangeAdd ||
  218. !pfnInterlockedCompareExchange ||
  219. !pfnInterlockedIncrement ||
  220. !pfnInterlockedDecrement ||
  221. !pfnReadDirChangesW ) {
  222. DBGPRINTF((DBG_CONTEXT,
  223. "Unable to obtain NT kernel32 entry point\n"));
  224. goto error_exit;
  225. }
  226. } else {
  227. DBGPRINTF((DBG_CONTEXT,"Error %d loading kernel32.dll\n",
  228. GetLastError()));
  229. goto error_exit;
  230. }
  231. #endif
  232. //
  233. // load the service locator entry points. Not fatal on failure.
  234. //
  235. // Loading of the inetsloc.dll service is disabled
  236. // g_hSvcLocDll = LoadLibrary("inetsloc.dll");
  237. g_hSvcLocDll = NULL;
  238. if ( g_hSvcLocDll != NULL ) {
  239. pfnInetRegisterSvc = (INET_REGISTER_SVC_FN)
  240. GetProcAddress( g_hSvcLocDll, "INetRegisterService" );
  241. pfnInetDeregisterSvc = (INET_DEREGISTER_SVC_FN)
  242. GetProcAddress( g_hSvcLocDll, "INetDeregisterService" );
  243. pfnInitSvcLoc = (INET_INIT_CONTROL_SVC_FN)
  244. GetProcAddress( g_hSvcLocDll, "InitSvcLocator" );
  245. pfnTerminateSvcLoc = (INET_INIT_CONTROL_SVC_FN)
  246. GetProcAddress( g_hSvcLocDll, "TerminateSvcLocator" );
  247. if ( !pfnInetRegisterSvc ||
  248. !pfnInetDeregisterSvc ||
  249. !pfnInitSvcLoc ||
  250. !pfnTerminateSvcLoc ) {
  251. DBGPRINTF((DBG_CONTEXT,"Unable to find an inetsloc entrypoint\n"));
  252. FreeLibrary( g_hSvcLocDll );
  253. g_hSvcLocDll = NULL;
  254. }
  255. }
  256. if ( g_hSvcLocDll == NULL ) {
  257. DBGPRINTF((DBG_CONTEXT,
  258. "Unable to find an inetsloc.dll entrypoints!!!. Ignore if NTW.\n"));
  259. pfnInitSvcLoc = (INET_INIT_CONTROL_SVC_FN)DummySvclocFn;
  260. pfnTerminateSvcLoc = (INET_INIT_CONTROL_SVC_FN)DummySvclocFn;
  261. }
  262. //
  263. // rpcref
  264. //
  265. g_hRpcRef = LoadLibrary("rpcref.dll");
  266. if ( g_hRpcRef != NULL ) {
  267. pfnInetinfoStartRpcServer = (PFN_INETINFO_START_RPC_SERVER)
  268. GetProcAddress(g_hRpcRef,"InetinfoStartRpcServerListen");
  269. pfnInetinfoStopRpcServer = (PFN_INETINFO_STOP_RPC_SERVER)
  270. GetProcAddress(g_hRpcRef,"InetinfoStopRpcServerListen");
  271. } else {
  272. DBGPRINTF((DBG_CONTEXT, "Error %d loading rpcref.dll\n",
  273. GetLastError() ));
  274. goto error_exit;
  275. }
  276. if ( !LoadNTSecurityEntryPoints( ) ) {
  277. goto error_exit;
  278. }
  279. return(TRUE);
  280. error_exit:
  281. return(FALSE);
  282. } // GetDynamicEntryPoints
  283. VOID
  284. FreeDynamicLibraries(
  285. VOID
  286. )
  287. {
  288. if ( g_hSchannel != NULL ) {
  289. FreeLibrary( g_hSchannel );
  290. g_hSchannel = NULL;
  291. }
  292. if ( g_hCrypt32Dll != NULL ) {
  293. FreeLibrary( g_hCrypt32Dll );
  294. g_hCrypt32Dll = NULL;
  295. }
  296. if ( g_hSecurityDll != NULL ) {
  297. FreeLibrary( g_hSecurityDll );
  298. g_hSecurityDll = NULL;
  299. }
  300. if ( g_hSvcLocDll != NULL ) {
  301. FreeLibrary( g_hSvcLocDll );
  302. g_hSvcLocDll = NULL;
  303. }
  304. if ( g_hRpcRef != NULL ) {
  305. FreeLibrary( g_hRpcRef );
  306. g_hRpcRef = NULL;
  307. }
  308. if ( g_hLonsiNT != NULL ) {
  309. FreeLibrary( g_hLonsiNT );
  310. g_hLonsiNT = NULL;
  311. }
  312. return;
  313. } // FreeDynamicLibraries
  314. BOOL
  315. LoadNTSecurityEntryPoints(
  316. VOID
  317. )
  318. {
  319. IF_DEBUG(DLL_SECURITY) {
  320. DBGPRINTF((DBG_CONTEXT,"Entering LoadNTSecurityEntryPoints\n"));
  321. }
  322. //
  323. // Load Schannel
  324. //
  325. g_hSchannel = LoadLibrary( "schannel.dll" );
  326. if ( g_hSchannel != NULL ) {
  327. fnCrackCert = (SSL_CRACK_CERTIFICATE_FN)
  328. GetProcAddress( g_hSchannel, "SslCrackCertificate" );
  329. fnFreeCert = (SSL_FREE_CERTIFICATE_FN)
  330. GetProcAddress( g_hSchannel, "SslFreeCertificate" );
  331. } else {
  332. DBGPRINTF((DBG_CONTEXT,
  333. "Unable to load schannel.dll[err %d]\n", GetLastError() ));
  334. }
  335. //
  336. // Load Crypt32
  337. //
  338. g_hCrypt32Dll = LoadLibrary( "crypt32.dll" );
  339. if ( g_hCrypt32Dll != NULL ) {
  340. pfnFreeCertCtxt = (CRYPT32_FREE_CERTCTXT_FN)
  341. GetProcAddress( g_hCrypt32Dll, "CertFreeCertificateContext" );
  342. pfnGetCertCtxtProp = (CRYPT32_GET_CERTCTXT_PROP_FN)
  343. GetProcAddress( g_hCrypt32Dll, "CertGetCertificateContextProperty" );
  344. pfnCertVerifyRevocation = (CRYPT32_CERT_VERIFY_REVOCATION_FN)
  345. GetProcAddress( g_hCrypt32Dll, "CertVerifyRevocation" );
  346. pfnCertVerifyTimeValidity = (CRYPT32_CERT_VERIFY_TIME_VALIDITY)
  347. GetProcAddress( g_hCrypt32Dll, "CertVerifyTimeValidity" );
  348. pfnCertNameToStrA = (CRYPT32_CERT_NAME_TO_STR_A_FN)
  349. GetProcAddress( g_hCrypt32Dll, "CertNameToStrA" );
  350. } else {
  351. DBGPRINTF((DBG_CONTEXT,
  352. "Unable to load crypt32.dll[err %d]\n", GetLastError() ));
  353. }
  354. DBG_ASSERT( pfnFreeCertCtxt );
  355. DBG_ASSERT( pfnGetCertCtxtProp );
  356. DBG_ASSERT( pfnCertVerifyRevocation );
  357. DBG_ASSERT( pfnCertVerifyTimeValidity );
  358. DBG_ASSERT( pfnCertNameToStrA );
  359. //
  360. // Load security.dll
  361. //
  362. g_hSecurityDll = LoadLibrary( "security.dll" );
  363. if ( g_hSecurityDll == NULL ) {
  364. DBGPRINTF((DBG_CONTEXT,"Error %d loading security.dll\n",
  365. GetLastError()));
  366. return(FALSE);
  367. }
  368. if ( !GetSecurityDllEntryPoints( g_hSecurityDll ) ) {
  369. return(FALSE);
  370. }
  371. //
  372. // Load lsa stuff from lonsint.dll
  373. //
  374. g_hLonsiNT = LoadLibrary( "lonsint.dll" );
  375. if ( g_hLonsiNT == NULL ) {
  376. DBGPRINTF((DBG_CONTEXT,"Error %d loading lonsint.dll\n",
  377. GetLastError()));
  378. return(FALSE);
  379. }
  380. if ( !GetLogonDllEntryPoints( g_hLonsiNT ) ) {
  381. return FALSE;
  382. }
  383. return(TRUE);
  384. } // LoadNTSecurityEntryPoints
  385. BOOL
  386. GetSecurityDllEntryPoints(
  387. IN HINSTANCE hInstance
  388. )
  389. {
  390. pfnAcceptSecurityContext = (ACCEPT_SECURITY_CONTEXT_FN)
  391. GetProcAddress( hInstance, "AcceptSecurityContext" );
  392. pfnAcquireCredentialsHandle = (ACQUIRE_CREDENTIALS_HANDLE_FN)
  393. GetProcAddress( hInstance, "AcquireCredentialsHandleA" );
  394. pfnCompleteAuthToken = (COMPLETE_AUTH_TOKEN_FN)
  395. GetProcAddress( hInstance, "CompleteAuthToken" );
  396. pfnDeleteSecurityContext = (DELETE_SECURITY_CONTEXT_FN)
  397. GetProcAddress( hInstance, "DeleteSecurityContext" );
  398. pfnEnumerateSecurityPackages = (ENUMERATE_SECURITY_PACKAGES_FN)
  399. GetProcAddress( hInstance, "EnumerateSecurityPackagesA" );
  400. pfnImpersonateSecurityContext = (IMPERSONATE_SECURITY_CONTEXT_FN)
  401. GetProcAddress( hInstance, "ImpersonateSecurityContext" );
  402. pfnInitializeSecurityContext = (INITIALIZE_SECURITY_CONTEXT_FN)
  403. GetProcAddress( hInstance, "InitializeSecurityContextA" );
  404. pfnFreeContextBuffer = (FREE_CONTEXT_BUFFER_FN)
  405. GetProcAddress( hInstance, "FreeContextBuffer" );
  406. pfnFreeCredentialsHandle = (FREE_CREDENTIALS_HANDLE_FN)
  407. GetProcAddress( hInstance, "FreeCredentialsHandle" );
  408. pfnQueryContextAttributes = (QUERY_CONTEXT_ATTRIBUTES_FN)
  409. GetProcAddress( hInstance, "QueryContextAttributesA" );
  410. pfnQuerySecurityContextToken = (QUERY_SECURITY_CONTEXT_TOKEN_FN)
  411. GetProcAddress( hInstance, "QuerySecurityContextToken" );
  412. pfnQuerySecurityPackageInfo = (QUERY_SECURITY_PACKAGE_INFO_FN)
  413. GetProcAddress( hInstance, "QuerySecurityPackageInfoA" );
  414. pfnRevertSecurityContext = (REVERT_SECURITY_CONTEXT_FN)
  415. GetProcAddress( hInstance, "RevertSecurityContext" );
  416. if ( !pfnAcceptSecurityContext ||
  417. !pfnAcquireCredentialsHandle ||
  418. !pfnCompleteAuthToken ||
  419. !pfnDeleteSecurityContext ||
  420. !pfnEnumerateSecurityPackages ||
  421. !pfnImpersonateSecurityContext ||
  422. !pfnInitializeSecurityContext ||
  423. !pfnFreeContextBuffer ||
  424. !pfnFreeCredentialsHandle ||
  425. !pfnQueryContextAttributes ||
  426. !pfnQuerySecurityContextToken ||
  427. !pfnQuerySecurityPackageInfo ||
  428. !pfnRevertSecurityContext ) {
  429. DBGPRINTF((DBG_CONTEXT,"Unable to get security entry points\n"));
  430. SetLastError(ERROR_PROC_NOT_FOUND);
  431. DBG_ASSERT(FALSE);
  432. return FALSE;
  433. }
  434. return(TRUE);
  435. } // GetSecurityDllEntryPoints
  436. BOOL
  437. GetLogonDllEntryPoints(
  438. IN HINSTANCE hInstance
  439. )
  440. {
  441. pfnLogon32Initialize = (LOGON32_INITIALIZE_FN)
  442. GetProcAddress( hInstance, "IISLogon32Initialize" );
  443. pfnLogonNetUserA = (LOGON_NET_USER_A_FN)
  444. GetProcAddress( hInstance, "IISLogonNetUserA" );
  445. pfnLogonNetUserW = (LOGON_NET_USER_W_FN)
  446. GetProcAddress( hInstance, "IISLogonNetUserW" );
  447. pfnNetUserCookieA = (NET_USER_COOKIE_A_FN)
  448. GetProcAddress( hInstance, "IISNetUserCookieA" );
  449. pfnLogonDigestUserA = (LOGON_DIGEST_USER_A_FN)
  450. GetProcAddress( hInstance, "IISLogonDigestUserA" );
  451. pfnGetDefaultDomainName = (GET_DEFAULT_DOMAIN_NAME_FN)
  452. GetProcAddress( hInstance, "IISGetDefaultDomainName" );
  453. if ( !pfnLogon32Initialize ||
  454. !pfnLogonNetUserA ||
  455. !pfnLogonNetUserW ||
  456. !pfnNetUserCookieA ||
  457. !pfnLogonDigestUserA ||
  458. !pfnGetDefaultDomainName ) {
  459. DBGPRINTF((DBG_CONTEXT,"Unable to get an entry point on lonsint.dll\n"));
  460. SetLastError( ERROR_PROC_NOT_FOUND );
  461. DBG_ASSERT(FALSE);
  462. return FALSE;
  463. }
  464. return(TRUE);
  465. } // GetLogonDllEntryPoints
  466. BOOL
  467. DummySvclocFn(
  468. VOID
  469. )
  470. {
  471. return(TRUE);
  472. } // DummySvclocFn