|
|
//****************************************************************************
//
// Module: ULS.DLL
// File: ldapstub.cpp
// Content: ULS/LDAP stubbed functions
//
// Copyright (c) Microsoft Corporation 1996-1997
//
//****************************************************************************
#include "ulsp.h"
HWND g_hwndCB = NULL; ULONG uMsgID;
//
// Initialization
//
HRESULT UlsLdap_Initialize ( HWND hwndCallback) { uMsgID = 1; g_hwndCB = hwndCallback; return S_OK; }
HRESULT UlsLdap_Deinitialize (void) { uMsgID = 0; g_hwndCB = NULL; return S_OK; }
HRESULT UlsLdap_Cancel ( ULONG uReqID) { return S_OK; }
//
// Local machine information
//
HRESULT UlsLdap_RegisterUser ( LPTSTR pszServer, PLDAP_USERINFO pUserInfo, PHANDLE phUser, PLDAP_ASYNCINFO pAsyncInfo ) { *phUser = (HANDLE)(0x11111111); pAsyncInfo->uMsgID = uMsgID; PostMessage(g_hwndCB, WM_ULS_REGISTER_USER, uMsgID, NOERROR); uMsgID++; return NOERROR; }
HRESULT UlsLdap_RegisterApp ( HANDLE hUser, PLDAP_APPINFO pAppInfo, PHANDLE phApp, PLDAP_ASYNCINFO pAsyncInfo ) { if (hUser != (HANDLE)(0x11111111)) { ASSERT(0); return ULS_E_FAIL; };
*phApp = (HANDLE)(0x22222222); pAsyncInfo->uMsgID = uMsgID; PostMessage(g_hwndCB, WM_ULS_REGISTER_APP, uMsgID, NOERROR); uMsgID++; return NOERROR; }
HRESULT UlsLdap_RegisterProtocol ( HANDLE hApp, PLDAP_PROTINFO pProtInfo, PHANDLE phProtocol, PLDAP_ASYNCINFO pAsyncInfo ) { if (hApp != (HANDLE)(0x22222222)) { ASSERT(0); return ULS_E_FAIL; };
*phProtocol = (HANDLE)(0x44444444); pAsyncInfo->uMsgID = uMsgID; PostMessage(g_hwndCB, WM_ULS_REGISTER_PROTOCOL, uMsgID, NOERROR); uMsgID++; return NOERROR; }
HRESULT UlsLdap_UnRegisterUser ( HANDLE hUser, PLDAP_ASYNCINFO pAsyncInfo ) { if (hUser != (HANDLE)(0x11111111)) { ASSERT(0); return ULS_E_FAIL; };
pAsyncInfo->uMsgID = uMsgID; PostMessage(g_hwndCB, WM_ULS_UNREGISTER_USER, uMsgID, NOERROR); uMsgID++; return NOERROR; }
HRESULT UlsLdap_UnRegisterApp ( HANDLE hApp, PLDAP_ASYNCINFO pAsyncInfo ) { if (hApp != (HANDLE)(0x22222222)) { ASSERT(0); return ULS_E_FAIL; };
pAsyncInfo->uMsgID = uMsgID; PostMessage(g_hwndCB, WM_ULS_UNREGISTER_APP, uMsgID, NOERROR); uMsgID++; return NOERROR; }
HRESULT UlsLdap_UnRegisterProtocol ( HANDLE hProt, PLDAP_ASYNCINFO pAsyncInfo ) { if (hProt != (HANDLE)(0x44444444)) { ASSERT(0); return ULS_E_FAIL; };
pAsyncInfo->uMsgID = uMsgID; PostMessage(g_hwndCB, WM_ULS_UNREGISTER_PROTOCOL, uMsgID, NOERROR); uMsgID++; return NOERROR; }
HRESULT UlsLdap_SetUserInfo ( HANDLE hUser, PLDAP_USERINFO pInfo, PLDAP_ASYNCINFO pAsyncInfo ) { pAsyncInfo->uMsgID = uMsgID; PostMessage(g_hwndCB, WM_ULS_SET_USER_INFO, uMsgID, NOERROR); uMsgID++; return NOERROR; }
HRESULT UlsLdap_SetAppAttrs ( HANDLE hApp, ULONG cAttrs, LPTSTR pszAttrs, PLDAP_ASYNCINFO pAsyncInfo ) { pAsyncInfo->uMsgID = uMsgID; PostMessage(g_hwndCB, WM_ULS_SET_APP_ATTRS, uMsgID, NOERROR); uMsgID++; return NOERROR; }
HRESULT UlsLdap_SetProtocolAttrs ( HANDLE hProt, ULONG cAttrs, LPTSTR pszAttrs, PLDAP_ASYNCINFO pAsyncInfo ) { pAsyncInfo->uMsgID = uMsgID; PostMessage(g_hwndCB, WM_ULS_SET_PROTOCOL_ATTRS, uMsgID, NOERROR); uMsgID++; return NOERROR; }
HRESULT UlsLdap_RemoveAppAttrs ( HANDLE hApp, ULONG cAttrs, LPTSTR pszAttrNames, PLDAP_ASYNCINFO pAsyncInfo ) { pAsyncInfo->uMsgID = uMsgID; PostMessage(g_hwndCB, WM_ULS_REMOVE_APP_ATTRS, uMsgID, NOERROR); uMsgID++; return NOERROR; }
HRESULT UlsLdap_RemoveProtocolAttrs ( HANDLE hApp, ULONG cAttrs, LPTSTR pszAttrNames, PLDAP_ASYNCINFO pAsyncInfo ) { pAsyncInfo->uMsgID = uMsgID; PostMessage(g_hwndCB, WM_ULS_REMOVE_PROTOCOL_ATTRS, uMsgID, NOERROR); uMsgID++; return NOERROR; }
//
// User Location Services request
//
static TCHAR c_szEnumNames_1[] = {TEXT("User_1") TEXT("\0") TEXT("User_2") TEXT("\0") TEXT("User_3") TEXT("\0") TEXT("User_4") TEXT("\0\0")};
static TCHAR c_szEnumNames_2[] = {TEXT("User_5") TEXT("\0") TEXT("User_6") TEXT("\0") TEXT("User_7") TEXT("\0") TEXT("User_8") TEXT("\0\0")};
HRESULT UlsLdap_EnumUsers ( LPTSTR pszServer, PLDAP_ASYNCINFO pAsyncInfo ) { PLDAP_ENUM ple;
// First batch
//
ple = (PLDAP_ENUM)LocalAlloc(LMEM_FIXED, sizeof(*ple)+sizeof(c_szEnumNames_1)); ple->uSize = sizeof(*ple); ple->hResult = NOERROR; ple->cItems = 4; ple->uOffsetItems = ple->uSize; CopyMemory(((PBYTE)ple)+ple->uOffsetItems, c_szEnumNames_1, sizeof(c_szEnumNames_1));
PostMessage(g_hwndCB, WM_ULS_ENUM_USERS, uMsgID, (LPARAM)ple);
// Second batch
//
ple = (PLDAP_ENUM)LocalAlloc(LMEM_FIXED, sizeof(*ple)+sizeof(c_szEnumNames_2)); ple->uSize = sizeof(*ple); ple->hResult = NOERROR; ple->cItems = 4; ple->uOffsetItems = ple->uSize; CopyMemory(((PBYTE)ple)+ple->uOffsetItems, c_szEnumNames_2, sizeof(c_szEnumNames_2));
PostMessage(g_hwndCB, WM_ULS_ENUM_USERS, uMsgID, (LPARAM)ple);
// Terminate
//
PostMessage(g_hwndCB, WM_ULS_ENUM_USERS, uMsgID, (LPARAM)NULL);
pAsyncInfo->uMsgID = uMsgID; uMsgID++; return NOERROR; }
HRESULT UlsLdap_ResolveUser ( LPTSTR pszServer, LPTSTR pszUserName, PLDAP_ASYNCINFO pAsyncInfo ) { PLDAP_USERINFO_RES plur; PLDAP_USERINFO plu; ULONG cLen;
plur = (PLDAP_USERINFO_RES)LocalAlloc(LMEM_FIXED, sizeof(*plur)+ (sizeof(TCHAR)*MAX_PATH)); plur->uSize = sizeof(*plur); plur->hResult = NOERROR;
plu = &(plur->lui); plu->uSize = sizeof(LDAP_USERINFO); plu->uOffsetName = plu->uSize; cLen = wsprintf((LPTSTR)(((PBYTE)plu)+plu->uOffsetName), TEXT("%s"), pszUserName) + 1;
plu->uOffsetFirstName = plu->uOffsetName+cLen; cLen = wsprintf((LPTSTR)(((PBYTE)plu)+plu->uOffsetFirstName), TEXT("%s_First"), pszUserName) + 1;
plu->uOffsetLastName = plu->uOffsetFirstName+cLen; cLen = wsprintf((LPTSTR)(((PBYTE)plu)+plu->uOffsetLastName), TEXT("%s_Last"), pszUserName) + 1;
plu->uOffsetEMailName = plu->uOffsetLastName+cLen; cLen = wsprintf((LPTSTR)(((PBYTE)plu)+plu->uOffsetEMailName), TEXT("%s"), pszUserName) + 1;
plu->uOffsetCityName = plu->uOffsetEMailName+cLen; cLen = wsprintf((LPTSTR)(((PBYTE)plu)+plu->uOffsetCityName), TEXT("%sville"), pszUserName) + 1;
plu->uOffsetCountryName = plu->uOffsetCityName+cLen; cLen = wsprintf((LPTSTR)(((PBYTE)plu)+plu->uOffsetCountryName), TEXT("%sland"), pszUserName) + 1;
plu->uOffsetComment = plu->uOffsetCountryName+cLen; cLen = wsprintf((LPTSTR)(((PBYTE)plu)+plu->uOffsetComment), TEXT("%s's comment"), pszUserName) + 1;
plu->uOffsetIPAddress = plu->uOffsetComment+cLen; lstrcpy((LPTSTR)(((PBYTE)plu)+plu->uOffsetIPAddress), TEXT("125.1.100.2")); plu->dwFlags = 1;
pAsyncInfo->uMsgID = uMsgID; PostMessage(g_hwndCB, WM_ULS_RESOLVE_USER, uMsgID, (LPARAM)plur); uMsgID++; return S_OK; }
HRESULT UlsLdap_EnumUserInfos ( LPTSTR pszServer, PLDAP_ASYNCINFO pAsyncInfo ) { PLDAP_ENUM ple; PLDAP_USERINFO plu; LPTSTR pszUserName; ULONG uOffsetLast; ULONG cLen;
// First batch
//
ple = (PLDAP_ENUM)LocalAlloc(LMEM_FIXED, sizeof(*ple)+ 3*sizeof(LDAP_USERINFO)+ 3*sizeof(TCHAR)*MAX_PATH); ple->uSize = sizeof(*ple); ple->hResult = NOERROR; ple->cItems = 3; ple->uOffsetItems = ple->uSize;
// First batch--First guy
//
pszUserName = c_szEnumNames_1; plu = (PLDAP_USERINFO)(((PBYTE)ple)+ple->uOffsetItems); plu->uSize = sizeof(LDAP_USERINFO); plu->uOffsetName = sizeof(*plu)*3; cLen = wsprintf((LPTSTR)(((PBYTE)plu)+plu->uOffsetName), TEXT("%s"), pszUserName) + 1;
plu->uOffsetFirstName = plu->uOffsetName+cLen; cLen = wsprintf((LPTSTR)(((PBYTE)plu)+plu->uOffsetFirstName), TEXT("%s_First"), pszUserName) + 1;
plu->uOffsetLastName = plu->uOffsetFirstName+cLen; cLen = wsprintf((LPTSTR)(((PBYTE)plu)+plu->uOffsetLastName), TEXT("%s_Last"), pszUserName) + 1;
plu->uOffsetEMailName = plu->uOffsetLastName+cLen; cLen = wsprintf((LPTSTR)(((PBYTE)plu)+plu->uOffsetEMailName), TEXT("%s"), pszUserName) + 1;
plu->uOffsetCityName = plu->uOffsetEMailName+cLen; cLen = wsprintf((LPTSTR)(((PBYTE)plu)+plu->uOffsetCityName), TEXT("%sville"), pszUserName) + 1;
plu->uOffsetCountryName = plu->uOffsetCityName+cLen; cLen = wsprintf((LPTSTR)(((PBYTE)plu)+plu->uOffsetCountryName), TEXT("%sland"), pszUserName) + 1;
plu->uOffsetComment = plu->uOffsetCountryName+cLen; cLen = wsprintf((LPTSTR)(((PBYTE)plu)+plu->uOffsetComment), TEXT("%s's comment"), pszUserName) + 1;
plu->uOffsetIPAddress = plu->uOffsetComment+cLen; cLen = wsprintf((LPTSTR)(((PBYTE)plu)+plu->uOffsetIPAddress), TEXT("125.1.100.2"))+1; plu->dwFlags = 1; uOffsetLast = plu->uOffsetIPAddress+cLen;
// First batch--Second guy
//
pszUserName += lstrlen(pszUserName)+1; plu = (PLDAP_USERINFO)plu+1; plu->uSize = sizeof(LDAP_USERINFO); plu->uOffsetName = uOffsetLast-sizeof(*plu); cLen = wsprintf((LPTSTR)(((PBYTE)plu)+plu->uOffsetName), TEXT("%s"), pszUserName) + 1;
plu->uOffsetFirstName = plu->uOffsetName+cLen; cLen = wsprintf((LPTSTR)(((PBYTE)plu)+plu->uOffsetFirstName), TEXT("%s_First"), pszUserName) + 1;
plu->uOffsetLastName = plu->uOffsetFirstName+cLen; cLen = wsprintf((LPTSTR)(((PBYTE)plu)+plu->uOffsetLastName), TEXT("%s_Last"), pszUserName) + 1;
plu->uOffsetEMailName = plu->uOffsetLastName+cLen; cLen = wsprintf((LPTSTR)(((PBYTE)plu)+plu->uOffsetEMailName), TEXT("%s"), pszUserName) + 1;
plu->uOffsetCityName = plu->uOffsetEMailName+cLen; cLen = wsprintf((LPTSTR)(((PBYTE)plu)+plu->uOffsetCityName), TEXT("%sville"), pszUserName) + 1;
plu->uOffsetCountryName = plu->uOffsetCityName+cLen; cLen = wsprintf((LPTSTR)(((PBYTE)plu)+plu->uOffsetCountryName), TEXT("%sland"), pszUserName) + 1;
plu->uOffsetComment = plu->uOffsetCountryName+cLen; cLen = wsprintf((LPTSTR)(((PBYTE)plu)+plu->uOffsetComment), TEXT("%s's comment"), pszUserName) + 1;
plu->uOffsetIPAddress = plu->uOffsetComment+cLen; cLen = wsprintf((LPTSTR)(((PBYTE)plu)+plu->uOffsetIPAddress), TEXT("125.2.100.2"))+1; plu->dwFlags = 1; uOffsetLast = plu->uOffsetIPAddress+cLen;
// First batch--Third guy
//
pszUserName += lstrlen(pszUserName)+1; plu = (PLDAP_USERINFO)plu+1; plu->uSize = sizeof(LDAP_USERINFO); plu->uOffsetName = uOffsetLast-sizeof(*plu); cLen = wsprintf((LPTSTR)(((PBYTE)plu)+plu->uOffsetName), TEXT("%s"), pszUserName) + 1;
plu->uOffsetFirstName = plu->uOffsetName+cLen; cLen = wsprintf((LPTSTR)(((PBYTE)plu)+plu->uOffsetFirstName), TEXT("%s_First"), pszUserName) + 1;
plu->uOffsetLastName = plu->uOffsetFirstName+cLen; cLen = wsprintf((LPTSTR)(((PBYTE)plu)+plu->uOffsetLastName), TEXT("%s_Last"), pszUserName) + 1;
plu->uOffsetEMailName = plu->uOffsetLastName+cLen; cLen = wsprintf((LPTSTR)(((PBYTE)plu)+plu->uOffsetEMailName), TEXT("%s"), pszUserName) + 1;
plu->uOffsetCityName = plu->uOffsetEMailName+cLen; cLen = wsprintf((LPTSTR)(((PBYTE)plu)+plu->uOffsetCityName), TEXT("%sville"), pszUserName) + 1;
plu->uOffsetCountryName = plu->uOffsetCityName+cLen; cLen = wsprintf((LPTSTR)(((PBYTE)plu)+plu->uOffsetCountryName), TEXT("%sland"), pszUserName) + 1;
plu->uOffsetComment = plu->uOffsetCountryName+cLen; cLen = wsprintf((LPTSTR)(((PBYTE)plu)+plu->uOffsetComment), TEXT("%s's comment"), pszUserName) + 1;
plu->uOffsetIPAddress = plu->uOffsetComment+cLen; cLen = wsprintf((LPTSTR)(((PBYTE)plu)+plu->uOffsetIPAddress), TEXT("125.3.100.2"))+1; plu->dwFlags = 1; uOffsetLast = plu->uOffsetIPAddress+cLen;
PostMessage(g_hwndCB, WM_ULS_ENUM_USERINFOS, uMsgID, (LPARAM)ple);
// Second batch
//
ple = (PLDAP_ENUM)LocalAlloc(LMEM_FIXED, sizeof(*ple)+ 3*sizeof(LDAP_USERINFO)+ 3*sizeof(TCHAR)*MAX_PATH); ple->uSize = sizeof(*ple); ple->hResult = NOERROR; ple->cItems = 3; ple->uOffsetItems = ple->uSize;
// Second batch--First guy
//
pszUserName = c_szEnumNames_2; plu = (PLDAP_USERINFO)(((PBYTE)ple)+ple->uOffsetItems); plu->uSize = sizeof(LDAP_USERINFO); plu->uOffsetName = sizeof(*plu)*3; cLen = wsprintf((LPTSTR)(((PBYTE)plu)+plu->uOffsetName), TEXT("%s"), pszUserName) + 1;
plu->uOffsetFirstName = plu->uOffsetName+cLen; cLen = wsprintf((LPTSTR)(((PBYTE)plu)+plu->uOffsetFirstName), TEXT("%s_First"), pszUserName) + 1;
plu->uOffsetLastName = plu->uOffsetFirstName+cLen; cLen = wsprintf((LPTSTR)(((PBYTE)plu)+plu->uOffsetLastName), TEXT("%s_Last"), pszUserName) + 1;
plu->uOffsetEMailName = plu->uOffsetLastName+cLen; cLen = wsprintf((LPTSTR)(((PBYTE)plu)+plu->uOffsetEMailName), TEXT("%s"), pszUserName) + 1;
plu->uOffsetCityName = plu->uOffsetEMailName+cLen; cLen = wsprintf((LPTSTR)(((PBYTE)plu)+plu->uOffsetCityName), TEXT("%sville"), pszUserName) + 1;
plu->uOffsetCountryName = plu->uOffsetCityName+cLen; cLen = wsprintf((LPTSTR)(((PBYTE)plu)+plu->uOffsetCountryName), TEXT("%sland"), pszUserName) + 1;
plu->uOffsetComment = plu->uOffsetCountryName+cLen; cLen = wsprintf((LPTSTR)(((PBYTE)plu)+plu->uOffsetComment), TEXT("%s's comment"), pszUserName) + 1;
plu->uOffsetIPAddress = plu->uOffsetComment+cLen; cLen = wsprintf((LPTSTR)(((PBYTE)plu)+plu->uOffsetIPAddress), TEXT("125.1.100.2"))+1; plu->dwFlags = 1; uOffsetLast = plu->uOffsetIPAddress+cLen;
// Second batch--Second guy
//
pszUserName += lstrlen(pszUserName)+1; plu = (PLDAP_USERINFO)plu+1; plu->uSize = sizeof(LDAP_USERINFO); plu->uOffsetName = uOffsetLast-sizeof(*plu); cLen = wsprintf((LPTSTR)(((PBYTE)plu)+plu->uOffsetName), TEXT("%s"), pszUserName) + 1;
plu->uOffsetFirstName = plu->uOffsetName+cLen; cLen = wsprintf((LPTSTR)(((PBYTE)plu)+plu->uOffsetFirstName), TEXT("%s_First"), pszUserName) + 1;
plu->uOffsetLastName = plu->uOffsetFirstName+cLen; cLen = wsprintf((LPTSTR)(((PBYTE)plu)+plu->uOffsetLastName), TEXT("%s_Last"), pszUserName) + 1;
plu->uOffsetEMailName = plu->uOffsetLastName+cLen; cLen = wsprintf((LPTSTR)(((PBYTE)plu)+plu->uOffsetEMailName), TEXT("%s"), pszUserName) + 1;
plu->uOffsetCityName = plu->uOffsetEMailName+cLen; cLen = wsprintf((LPTSTR)(((PBYTE)plu)+plu->uOffsetCityName), TEXT("%sville"), pszUserName) + 1;
plu->uOffsetCountryName = plu->uOffsetCityName+cLen; cLen = wsprintf((LPTSTR)(((PBYTE)plu)+plu->uOffsetCountryName), TEXT("%sland"), pszUserName) + 1;
plu->uOffsetComment = plu->uOffsetCountryName+cLen; cLen = wsprintf((LPTSTR)(((PBYTE)plu)+plu->uOffsetComment), TEXT("%s's comment"), pszUserName) + 1;
plu->uOffsetIPAddress = plu->uOffsetComment+cLen; cLen = wsprintf((LPTSTR)(((PBYTE)plu)+plu->uOffsetIPAddress), TEXT("125.2.100.2"))+1; plu->dwFlags = 1; uOffsetLast = plu->uOffsetIPAddress+cLen;
// Second batch--Third guy
//
pszUserName += lstrlen(pszUserName)+1; plu = (PLDAP_USERINFO)plu+1; plu->uSize = sizeof(LDAP_USERINFO); plu->uOffsetName = uOffsetLast-sizeof(*plu); cLen = wsprintf((LPTSTR)(((PBYTE)plu)+plu->uOffsetName), TEXT("%s"), pszUserName) + 1;
plu->uOffsetFirstName = plu->uOffsetName+cLen; cLen = wsprintf((LPTSTR)(((PBYTE)plu)+plu->uOffsetFirstName), TEXT("%s_First"), pszUserName) + 1;
plu->uOffsetLastName = plu->uOffsetFirstName+cLen; cLen = wsprintf((LPTSTR)(((PBYTE)plu)+plu->uOffsetLastName), TEXT("%s_Last"), pszUserName) + 1;
plu->uOffsetEMailName = plu->uOffsetLastName+cLen; cLen = wsprintf((LPTSTR)(((PBYTE)plu)+plu->uOffsetEMailName), TEXT("%s"), pszUserName) + 1;
plu->uOffsetCityName = plu->uOffsetEMailName+cLen; cLen = wsprintf((LPTSTR)(((PBYTE)plu)+plu->uOffsetCityName), TEXT("%sville"), pszUserName) + 1;
plu->uOffsetCountryName = plu->uOffsetCityName+cLen; cLen = wsprintf((LPTSTR)(((PBYTE)plu)+plu->uOffsetCountryName), TEXT("%sland"), pszUserName) + 1;
plu->uOffsetComment = plu->uOffsetCountryName+cLen; cLen = wsprintf((LPTSTR)(((PBYTE)plu)+plu->uOffsetComment), TEXT("%s's comment"), pszUserName) + 1;
plu->uOffsetIPAddress = plu->uOffsetComment+cLen; cLen = wsprintf((LPTSTR)(((PBYTE)plu)+plu->uOffsetIPAddress), TEXT("125.3.100.2"))+1; plu->dwFlags = 1; uOffsetLast = plu->uOffsetIPAddress+cLen;
PostMessage(g_hwndCB, WM_ULS_ENUM_USERINFOS, uMsgID, (LPARAM)ple);
// Termination
//
PostMessage(g_hwndCB, WM_ULS_ENUM_USERINFOS, uMsgID, (LPARAM)NULL);
pAsyncInfo->uMsgID = uMsgID; uMsgID++; return NOERROR; }
static TCHAR c_szEnumApps[] = {TEXT("App_1") TEXT("\0") TEXT("App_2") TEXT("\0") TEXT("App_3") TEXT("\0") TEXT("App_4") TEXT("\0\0")}; HRESULT UlsLdap_EnumApps ( LPTSTR pszServer, LPTSTR pszUserName, PLDAP_ASYNCINFO pAsyncInfo ) { PLDAP_ENUM ple;
ple = (PLDAP_ENUM)LocalAlloc(LMEM_FIXED, sizeof(*ple)+sizeof(c_szEnumApps)); ple->uSize = sizeof(*ple); ple->hResult = NOERROR; ple->cItems = 4; ple->uOffsetItems = ple->uSize; CopyMemory(((PBYTE)ple)+ple->uOffsetItems, c_szEnumApps, sizeof(c_szEnumApps));
pAsyncInfo->uMsgID = uMsgID; PostMessage(g_hwndCB, WM_ULS_ENUM_APPS, uMsgID, (LPARAM)ple); uMsgID++; return NOERROR; }
static TCHAR c_szAttributes[] = {TEXT("Attr_1") TEXT("\0") TEXT("Value_1") TEXT("\0") TEXT("Attr_2") TEXT("\0") TEXT("Value_2") TEXT("\0") TEXT("Attr_3") TEXT("\0") TEXT("Value_3") TEXT("\0")};
HRESULT UlsLdap_ResolveApp ( LPTSTR pszServer, LPTSTR pszUserName, LPTSTR pszAppName, PLDAP_ASYNCINFO pAsyncInfo ) { PLDAP_APPINFO_RES plar; PLDAP_APPINFO pla; ULONG cLen;
plar = (PLDAP_APPINFO_RES)LocalAlloc(LMEM_FIXED, sizeof(*plar)+ (sizeof(TCHAR)*MAX_PATH)); plar->uSize = sizeof(*plar); plar->hResult = NOERROR;
pla = &(plar->lai); pla->uSize = sizeof(LDAP_APPINFO); pla->guid = IID_IEnumULSNames;
pla->uOffsetName = pla->uSize; cLen = wsprintf((LPTSTR)(((PBYTE)pla)+pla->uOffsetName), TEXT("%s"), pszAppName) + 1;
pla->uOffsetMimeType = pla->uOffsetName+cLen; cLen = wsprintf((LPTSTR)(((PBYTE)pla)+pla->uOffsetMimeType), TEXT("application\\%s"), pszAppName) + 1;
pla->cAttributes = 3; pla->uOffsetAttributes = pla->uOffsetMimeType+cLen; CopyMemory((LPBYTE)(((PBYTE)pla)+pla->uOffsetAttributes), c_szAttributes, sizeof(c_szAttributes));
pAsyncInfo->uMsgID = uMsgID; PostMessage(g_hwndCB, WM_ULS_RESOLVE_APP, uMsgID, (LPARAM)plar); uMsgID++; return S_OK; }
static TCHAR c_szEnumProts[] = {TEXT("Prot_1") TEXT("\0") TEXT("Prot_2") TEXT("\0") TEXT("Prot_3") TEXT("\0") TEXT("Prot_4") TEXT("\0\0")}; HRESULT UlsLdap_EnumProtocols ( LPTSTR pszServer, LPTSTR pszUserName, LPTSTR pszAppName, PLDAP_ASYNCINFO pAsyncInfo ) { PLDAP_ENUM ple;
ple = (PLDAP_ENUM)LocalAlloc(LMEM_FIXED, sizeof(*ple)+sizeof(c_szEnumProts)); ple->uSize = sizeof(*ple); ple->hResult = NOERROR; ple->cItems = 4; ple->uOffsetItems = ple->uSize; CopyMemory(((PBYTE)ple)+ple->uOffsetItems, c_szEnumProts, sizeof(c_szEnumProts));
pAsyncInfo->uMsgID = uMsgID; PostMessage(g_hwndCB, WM_ULS_ENUM_PROTOCOLS, uMsgID, (LPARAM)ple); uMsgID++; return NOERROR; }
HRESULT UlsLdap_ResolveProtocol ( LPTSTR pszServer, LPTSTR pszUserName, LPTSTR pszAppName, LPTSTR pszProtName, PLDAP_ASYNCINFO pAsyncInfo ) { PLDAP_PROTINFO_RES plpr; PLDAP_PROTINFO plp; ULONG cLen;
plpr = (PLDAP_PROTINFO_RES)LocalAlloc(LMEM_FIXED, sizeof(*plpr)+ (sizeof(TCHAR)*MAX_PATH)); plpr->uSize = sizeof(*plpr); plpr->hResult = NOERROR;
plp = &(plpr->lpi); plp->uSize = sizeof(LDAP_PROTINFO); plp->uPortNumber = 80;
plp->uOffsetName = plp->uSize; cLen = wsprintf((LPTSTR)(((PBYTE)plp)+plp->uOffsetName), TEXT("%s"), pszProtName) + 1;
plp->uOffsetMimeType = plp->uOffsetName+cLen; cLen = wsprintf((LPTSTR)(((PBYTE)plp)+plp->uOffsetMimeType), TEXT("protocol\\%s"), pszProtName) + 1;
plp->cAttributes = 3; plp->uOffsetAttributes = plp->uOffsetMimeType+cLen; CopyMemory((LPBYTE)(((PBYTE)plp)+plp->uOffsetAttributes), c_szAttributes, sizeof(c_szAttributes));
pAsyncInfo->uMsgID = uMsgID; PostMessage(g_hwndCB, WM_ULS_RESOLVE_PROTOCOL, uMsgID, (LPARAM)plpr); uMsgID++; return S_OK; }
|