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.
 
 
 
 
 
 

1357 lines
36 KiB

//****************************************************************************
//
// Module: ULS.DLL
// File: callback.cpp
// Content: This file contains the ULS callback routine.
// History:
// Wed 17-Apr-1996 11:13:54 -by- Viroon Touranachun [viroont]
//
// Copyright (c) Microsoft Corporation 1995-1996
//
//****************************************************************************
#include "ulsp.h"
#include "callback.h"
#include "culs.h"
#include "localusr.h"
#include "attribs.h"
#include "localprt.h"
#include "ulsmeet.h"
//****************************************************************************
// void OnRegisterResult(UINT uMsg, ULONG uMsgID, HRESULT hResult)
//
// History:
// Wed 17-Apr-1996 11:14:03 -by- Viroon Touranachun [viroont]
// Created.
//****************************************************************************
void OnRegisterResult(UINT uMsg, ULONG uMsgID, HRESULT hResult)
{
COM_REQ_INFO ri;
ReqInfo_Init (&ri);
// Look for the matching request information
//
ri.uReqID = 0;
ri.uMsgID = uMsgID;
if (SUCCEEDED(g_pReqMgr->RequestDone(&ri)))
{
ASSERT(uMsg == ri.uReqType);
CIlsUser *pUser = ReqInfo_GetUser (&ri);
switch(uMsg)
{
case WM_ILS_REGISTER_CLIENT: // lParam = hResult
//
// Call the appropriate object's member
//
ASSERT (pUser != NULL);
if (pUser != NULL)
pUser->InternalRegisterNext(hResult);
break;
case WM_ILS_UNREGISTER_CLIENT: // lParam = hResult
//
// Call the appropriate object's member
//
ASSERT (pUser != NULL);
if (pUser != NULL)
pUser->InternalUnregisterNext(hResult);
break;
default:
ASSERT(0);
break;
};
// Release the objects
//
if (pUser != NULL)
pUser->Release ();
}
else
{
DPRINTF1(TEXT("OnRegisterResult: No pending request for %x"),
uMsgID);
// ASSERT (0);
};
return;
}
//****************************************************************************
// void OnLocalRegisterResult(UINT uMsg, ULONG uReqID, HRESULT hResult)
//
// History:
// Wed 17-Apr-1996 11:14:03 -by- Viroon Touranachun [viroont]
// Created.
//****************************************************************************
void OnLocalRegisterResult(UINT uMsg, ULONG uReqID, HRESULT hResult)
{
COM_REQ_INFO ri;
ReqInfo_Init (&ri);
// Look for the matching request information
//
ri.uReqID = uReqID;
ri.uMsgID = 0;
if (SUCCEEDED(g_pReqMgr->RequestDone(&ri)))
{
ASSERT(uMsg == ri.uReqType);
CIlsUser *pUser = ReqInfo_GetUser (&ri);
// Call the appropriate object's member
//
switch(uMsg)
{
case WM_ILS_LOCAL_REGISTER:
ASSERT (pUser != NULL);
if (pUser != NULL)
pUser->RegisterResult(uReqID, hResult);
break;
case WM_ILS_LOCAL_UNREGISTER:
ASSERT (pUser != NULL);
if (pUser != NULL)
pUser->UnregisterResult(uReqID, hResult);
break;
default:
ASSERT(0);
break;
};
// Release the objects
//
if (pUser != NULL)
pUser->Release ();
}
else
{
DPRINTF1(TEXT("OnLocalRegisterResult: No pending request for %x"),
uReqID);
// ASSERT (0);
};
return;
}
//****************************************************************************
// void OnSetUserInfo(UINT uMsg, ULONG uID, HRESULT hResult)
//
// History:
// Wed 17-Apr-1996 11:14:03 -by- Viroon Touranachun [viroont]
// Created.
//****************************************************************************
void OnSetUserInfo(UINT uMsg, ULONG uID, HRESULT hResult)
{
COM_REQ_INFO ri;
ReqInfo_Init (&ri);
switch (uMsg)
{
case WM_ILS_SET_CLIENT_INFO:
//
// Look for the matching Ldap Message ID
//
ri.uReqID = 0; // Mark that we are looking for the message ID
ri.uMsgID = uID; // Not the request ID
break;
default:
ASSERT(0);
break;
};
if (SUCCEEDED(g_pReqMgr->RequestDone(&ri)))
{
ASSERT(uMsg == ri.uReqType);
CIlsUser *pUser = ReqInfo_GetUser (&ri);
ASSERT (pUser != NULL);
if (pUser != NULL)
{
// Call the appropriate object's member
//
pUser->UpdateResult(ri.uReqID, hResult);
// Release the objects
//
pUser->Release();
}
}
else
{
DPRINTF1(TEXT("OnSetUserInfo: No pending request for %x"),
uID);
// ASSERT (0);
};
return;
}
//****************************************************************************
// void OnSetProtocol(UINT uMsg, ULONG uID, HRESULT hResult)
//
// History:
// Wed 17-Apr-1996 11:14:03 -by- Viroon Touranachun [viroont]
// Created.
//****************************************************************************
void OnSetProtocol(UINT uMsg, ULONG uID, HRESULT hResult)
{
COM_REQ_INFO ri;
ReqInfo_Init (&ri);
APP_CHANGE_PROT uCmd;
switch (uMsg)
{
case WM_ILS_REGISTER_PROTOCOL:
// Look for the matching request information
//
ri.uReqID = 0; // Mark that we are looking for the message ID
ri.uMsgID = uID; // Not the request ID
uCmd = ILS_APP_ADD_PROT;
break;
case WM_ILS_LOCAL_REGISTER_PROTOCOL:
// Look for the matching request information
//
ri.uReqID = uID; // Mark that we are looking for the request ID
ri.uMsgID = 0; // Not the message ID
uCmd = ILS_APP_ADD_PROT;
break;
case WM_ILS_UNREGISTER_PROTOCOL:
// Look for the matching request information
//
ri.uReqID = 0; // Mark that we are looking for the message ID
ri.uMsgID = uID; // Not the request ID
uCmd = ILS_APP_REMOVE_PROT;
break;
case WM_ILS_LOCAL_UNREGISTER_PROTOCOL:
// Look for the matching request information
//
ri.uReqID = uID; // Mark that we are looking for the request ID
ri.uMsgID = 0; // Not the message ID
uCmd = ILS_APP_REMOVE_PROT;
break;
default:
ASSERT(0);
break;
};
if (SUCCEEDED(g_pReqMgr->RequestDone(&ri)))
{
ASSERT(uMsg == ri.uReqType);
CIlsUser *pUser = ReqInfo_GetUser (&ri);
CLocalProt *pProtocol = ReqInfo_GetProtocol (&ri);
// Check the request parameter
//
if (pProtocol == NULL)
{
switch(uMsg)
{
case WM_ILS_REGISTER_PROTOCOL:
// Call the appropriate object's member
//
ASSERT (pUser != NULL);
if (pUser != NULL)
pUser->InternalRegisterNext(hResult);
break;
case WM_ILS_UNREGISTER_PROTOCOL:
// Call the appropriate object's member
//
ASSERT (pUser != NULL);
if (pUser != NULL)
pUser->InternalUnregisterNext(hResult);
break;
default:
// Must be a response from server
//
ASSERT(0);
break;
};
// Release the objects
//
if (pUser != NULL)
pUser->Release();
}
else
{
ASSERT (pUser != NULL && pProtocol != NULL);
if (pUser != NULL && pProtocol != NULL)
{
// Call the appropriate object's member
//
pUser->ProtocolChangeResult(pProtocol,
ri.uReqID, hResult,
uCmd);
// Release the objects
//
pUser->Release();
pProtocol->Release();
}
};
}
else
{
DPRINTF1(TEXT("OnSetProtocol: No pending request for %x"),
uID);
// ASSERT (0);
};
return;
}
//****************************************************************************
// void OnEnumUserNamesResult(ULONG uMsgID, PLDAP_ENUM ple)
//
// History:
// Wed 17-Apr-1996 11:14:03 -by- Viroon Touranachun [viroont]
// Created.
//****************************************************************************
void OnEnumUserNamesResult(ULONG uMsgID, PLDAP_ENUM ple)
{
COM_REQ_INFO ri;
ReqInfo_Init (&ri);
// Look for the matching request information
//
ri.uReqID = 0;
ri.uMsgID = uMsgID;
if (SUCCEEDED(g_pReqMgr->GetRequestInfo(&ri)))
{
ASSERT(WM_ILS_ENUM_CLIENTS == ri.uReqType);
CIlsMain *pMain = ReqInfo_GetMain (&ri);
// Call the appropriate object's member
//
ASSERT (pMain != NULL);
if (pMain != NULL)
{
pMain->EnumUserNamesResult(ri.uReqID, ple);
}
// If the enumeration was terminated, remove the pending request
//
if ((ple == NULL) ||
(ple->hResult != NOERROR))
{
ri.uReqID = 0;
ri.uMsgID = uMsgID;
g_pReqMgr->RequestDone(&ri);
// Release the objects
//
if (pMain != NULL)
pMain->Release();
};
}
else
{
DPRINTF1(TEXT("OnEnumUserNamesResult: No pending request for %x"),
uMsgID);
// ASSERT (0);
};
// Free the information buffer
//
if (ple != NULL)
{
::MemFree (ple);
};
return;
}
//****************************************************************************
// void OnEnumMeetingNamesResult(ULONG uMsgID, PLDAP_ENUM ple)
//
// History:
// Wed 17-Apr-1996 11:14:03 -by- Viroon Touranachun [viroont]
// Created.
//****************************************************************************
#ifdef ENABLE_MEETING_PLACE
void OnEnumMeetingNamesResult(ULONG uMsgID, PLDAP_ENUM ple)
{
COM_REQ_INFO ri;
ReqInfo_Init (&ri);
// Look for the matching request information
//
ri.uReqID = 0;
ri.uMsgID = uMsgID;
if (SUCCEEDED(g_pReqMgr->GetRequestInfo(&ri)))
{
ASSERT(WM_ILS_ENUM_MEETINGS == ri.uReqType);
CIlsMain *pMain = ReqInfo_GetMain (&ri);
ASSERT (pMain != NULL);
if (pMain != NULL)
{
// Call the appropriate object's member
//
pMain->EnumMeetingPlaceNamesResult(ri.uReqID, ple);
}
// If the enumeration was terminated, remove the pending request
//
if ((ple == NULL) ||
(ple->hResult != NOERROR))
{
ri.uReqID = 0;
ri.uMsgID = uMsgID;
g_pReqMgr->RequestDone(&ri);
// Release the objects
//
if (pMain != NULL)
pMain->Release();
};
}
else
{
DPRINTF1(TEXT("OnEnumMeetingNamesResult: No pending request for %x"),
uMsgID);
// ASSERT (0);
};
// Free the information buffer
//
if (ple != NULL)
{
::MemFree (ple);
};
return;
}
#endif // ENABLE_MEETING_PLACE
//****************************************************************************
// void OnResolveUserResult(ULONG uMsgID, PLDAP_CLIENTINFO_RES puir)
//
// History:
// Wed 17-Apr-1996 11:14:03 -by- Viroon Touranachun [viroont]
// Created.
//****************************************************************************
void OnResolveUserResult(ULONG uMsgID, PLDAP_CLIENTINFO_RES puir)
{
COM_REQ_INFO ri;
ReqInfo_Init (&ri);
// Look for the matching request information
//
ri.uReqID = 0;
ri.uMsgID = uMsgID;
if (SUCCEEDED(g_pReqMgr->RequestDone(&ri)))
{
ASSERT(WM_ILS_RESOLVE_CLIENT == ri.uReqType);
CIlsServer *pServer = ReqInfo_GetServer (&ri);
CIlsMain *pMain = ReqInfo_GetMain (&ri);
ASSERT (pMain != NULL && pServer != NULL);
if (pMain != NULL && pServer != NULL)
{
// Call the appropriate object's member
//
pMain->GetUserResult(ri.uReqID, puir, pServer);
// Release the objects
//
pMain->Release();
pServer->Release ();
}
}
else
{
DPRINTF1(TEXT("OnResolveUserResult: No pending request for %x"),
uMsgID);
// ASSERT (0);
};
// Free the information buffer
//
::MemFree (puir);
return;
}
//****************************************************************************
// void OnEnumUsersResult(ULONG uMsgID, PLDAP_ENUM ple)
//
// History:
// Wed 17-Apr-1996 11:14:03 -by- Viroon Touranachun [viroont]
// Created.
//****************************************************************************
void OnEnumUsersResult(ULONG uMsgID, PLDAP_ENUM ple)
{
COM_REQ_INFO ri;
ReqInfo_Init (&ri);
// Look for the matching request information
//
ri.uReqID = 0;
ri.uMsgID = uMsgID;
if (SUCCEEDED(g_pReqMgr->GetRequestInfo(&ri)))
{
ASSERT(WM_ILS_ENUM_CLIENTINFOS == ri.uReqType);
// Call the appropriate object's member
//
CIlsServer *pServer = ReqInfo_GetServer (&ri);
CIlsMain *pMain = ReqInfo_GetMain (&ri);
ASSERT (pServer != NULL && pMain != NULL);
if (pServer != NULL && pMain != NULL)
pMain->EnumUsersResult(ri.uReqID, ple, pServer);
// If the enumeration was terminated, remove the pending request
//
if ((ple == NULL) ||
(ple->hResult != NOERROR))
{
ri.uReqID = 0;
ri.uMsgID = uMsgID;
g_pReqMgr->RequestDone(&ri);
// Release the objects
//
if (pMain != NULL)
pMain->Release();
if (pServer != NULL)
pServer->Release ();
};
}
else
{
DPRINTF1(TEXT("EnumUsersResult: No pending request for %x"),
uMsgID);
// ASSERT (0);
};
// Free the information buffer
//
if (ple != NULL)
{
::MemFree (ple);
};
return;
}
//****************************************************************************
// void OnEnumMeetingsResult(ULONG uMsgID, PLDAP_ENUM ple)
//
// History:
// Wed 17-Apr-1996 11:14:03 -by- Viroon Touranachun [viroont]
// Created.
//****************************************************************************
#ifdef ENABLE_MEETING_PLACE
void OnEnumMeetingsResult(ULONG uMsgID, PLDAP_ENUM ple)
{
COM_REQ_INFO ri;
ReqInfo_Init (&ri);
// Look for the matching request information
//
ri.uReqID = 0;
ri.uMsgID = uMsgID;
if (SUCCEEDED(g_pReqMgr->GetRequestInfo(&ri)))
{
ASSERT(WM_ILS_ENUM_MEETINGINFOS == ri.uReqType);
// Call the appropriate object's member
//
CIlsServer *pServer = ReqInfo_GetServer (&ri);
CIlsMain *pMain = ReqInfo_GetMain (&ri);
ASSERT (pServer != NULL && pMain != NULL);
if (pServer != NULL && pMain != NULL)
{
pMain->EnumMeetingPlacesResult(ri.uReqID, ple, pServer);
}
// If the enumeration was terminated, remove the pending request
//
if ((ple == NULL) ||
(ple->hResult != NOERROR))
{
ri.uReqID = 0;
ri.uMsgID = uMsgID;
g_pReqMgr->RequestDone(&ri);
// Release the objects
//
if (pMain != NULL)
pMain->Release ();
if (pServer != NULL)
pServer->Release ();
};
}
else
{
DPRINTF1(TEXT("EnumMeetingsResult: No pending request for %x"),
uMsgID);
// ASSERT (0);
};
// Free the information buffer
//
if (ple != NULL)
{
::MemFree (ple);
};
return;
}
#endif // ENABLE_MEETING_PLACE
//****************************************************************************
// void OnEnumProtocolsResult(ULONG uMsgID, PLDAP_ENUM ple)
//
// History:
// Wed 17-Apr-1996 11:14:03 -by- Viroon Touranachun [viroont]
// Created.
//****************************************************************************
void OnEnumProtocolsResult(ULONG uMsgID, PLDAP_ENUM ple)
{
COM_REQ_INFO ri;
ReqInfo_Init (&ri);
// Look for the matching request information
//
ri.uReqID = 0;
ri.uMsgID = uMsgID;
if (SUCCEEDED(g_pReqMgr->RequestDone(&ri)))
{
ASSERT(WM_ILS_ENUM_PROTOCOLS == ri.uReqType);
CIlsUser *pUser = ReqInfo_GetUser (&ri);
ASSERT (pUser != NULL);
if (pUser != NULL)
{
// Call the appropriate object's member
//
pUser->EnumProtocolsResult(ri.uReqID, ple);
// Release the objects
//
pUser->Release();
}
}
else
{
DPRINTF1(TEXT("EnumProtocolsResult: No pending request for %x"),
uMsgID);
// ASSERT (0);
};
// Free the information buffer
//
::MemFree (ple);
return;
}
//****************************************************************************
// void OnResolveProtocolResult(ULONG uMsgID, PLDAP_PROTINFO_RES ppir)
//
// History:
// Wed 17-Apr-1996 11:14:03 -by- Viroon Touranachun [viroont]
// Created.
//****************************************************************************
void OnResolveProtocolResult(ULONG uMsgID, PLDAP_PROTINFO_RES ppir)
{
COM_REQ_INFO ri;
ReqInfo_Init (&ri);
// Look for the matching request information
//
ri.uReqID = 0;
ri.uMsgID = uMsgID;
if (SUCCEEDED(g_pReqMgr->RequestDone(&ri)))
{
ASSERT(WM_ILS_RESOLVE_PROTOCOL == ri.uReqType);
CIlsUser *pUser = ReqInfo_GetUser (&ri);
ASSERT (pUser != NULL);
if (pUser != NULL)
{
// Call the appropriate object's member
//
pUser->GetProtocolResult(ri.uReqID, ppir);
// Release the objects
//
pUser->Release();
}
}
else
{
DPRINTF1(TEXT("OnResolveProtocolResult: No pending request for %x"),
uMsgID);
// ASSERT (0);
};
// Free the information buffer
//
::MemFree (ppir);
return;
}
//****************************************************************************
// VOID OnClientNeedRelogon ( BOOL fPrimary, VOID *pUnk)
//
// History:
// Thur 07-Nov-1996 12:50:00 -by- Chu, Lon-Chan [lonchanc]
// Created.
//****************************************************************************
VOID OnClientNeedRelogon ( BOOL fPrimary, VOID *pUnk)
{
ASSERT (pUnk != NULL);
((CIlsUser *)pUnk)->StateChanged (WM_ILS_CLIENT_NEED_RELOGON, fPrimary);
}
//****************************************************************************
// VOID OnClientNetworkDown ( BOOL fPrimary, VOID *pUnk)
//
// History:
// Thur 07-Nov-1996 12:50:00 -by- Chu, Lon-Chan [lonchanc]
// Created.
//****************************************************************************
VOID OnClientNetworkDown ( BOOL fPrimary, VOID *pUnk)
{
ASSERT (pUnk != NULL);
((CIlsUser *)pUnk)->StateChanged (WM_ILS_CLIENT_NETWORK_DOWN, fPrimary);
}
//****************************************************************************
// void OnResolveUserResult(ULONG uMsgID, PLDAP_CLIENTINFO_RES puir)
//
// History:
// Wed 17-Apr-1996 11:14:03 -by- Viroon Touranachun [viroont]
// Created.
//****************************************************************************
#ifdef ENABLE_MEETING_PLACE
void OnResolveMeetingPlaceResult (ULONG uMsgID, PLDAP_MEETINFO_RES pmir)
{
COM_REQ_INFO ri;
ReqInfo_Init (&ri);
// Look for the matching request information
//
ri.uReqID = 0;
ri.uMsgID = uMsgID;
if (SUCCEEDED(g_pReqMgr->RequestDone(&ri)))
{
ASSERT(WM_ILS_RESOLVE_MEETING == ri.uReqType);
CIlsServer *pServer = ReqInfo_GetServer (&ri);
CIlsMain *pMain = ReqInfo_GetMain (&ri);
ASSERT (pMain != NULL && pServer != NULL);
if (pMain != NULL && pServer != NULL)
{
// Call the appropriate object's member
//
pMain->GetMeetingPlaceResult(ri.uReqID, pmir, pIlsServer);
// Release the objects
//
pServer->Release ();
pMain->Release();
}
}
else
{
DPRINTF1(TEXT("OnResolveMeetingPlaceResult: No pending request for %x"),
uMsgID);
// ASSERT (0);
};
// Free the information buffer
//
::MemFree (pmir);
return;
}
#endif // ENABLE_MEETING_PLACE
//****************************************************************************
// Routine: OnEnumMeetingPlacesResult(ULONG uMsgID, PLDAP_ENUM ple)
//
// Synopsis:
//
// Arguments:
//
// Returns: void
//
// History: 11/27/1996 Shishir Pardikar [shishirp] Created.
//
// Notes:
//
//****************************************************************************
#ifdef ENABLE_MEETING_PLACE
void OnEnumMeetingPlacesResult(ULONG uMsgID, PLDAP_ENUM ple)
{
COM_REQ_INFO ri;
ReqInfo_Init (&ri);
// Look for the matching request information
//
ri.uReqID = 0;
ri.uMsgID = uMsgID;
if (SUCCEEDED(g_pReqMgr->GetRequestInfo(&ri)))
{
ASSERT(WM_ILS_ENUM_MEETINGINFOS == ri.uReqType);
CIlsServer *pServer = ReqInfo_GetServer (&ri);
CIlsMain *pMain = ReqInfo_GetMain (&ri);
ASSERT (pServer != NULL && pMain != NULL);
if (pServer != NULL && pMain != NULL)
{
// Call the appropriate object's member
//
pMain->EnumMeetingPlacesResult(ri.uReqID, ple, pServer);
}
// If the enumeration was terminated, remove the pending request
//
if ((ple == NULL) ||
(ple->hResult != NOERROR))
{
ri.uReqID = 0;
ri.uMsgID = uMsgID;
g_pReqMgr->RequestDone(&ri);
// Release the objects
//
if (pMain != NULL)
pMain->Release();
if (pServer != NULL)
pServer->Release ();
};
}
else
{
DPRINTF1(TEXT("EnumMeetingsResult: No pending request for %x"),
uMsgID);
// ASSERT (0);
};
// Free the information buffer
//
if (ple != NULL)
{
::MemFree (ple);
};
return;
}
#endif // ENABLE_MEETING_PLACE
//****************************************************************************
// Routine: OnEnumMeetingPlaceNamesResult(ULONG uMsgID, PLDAP_ENUM ple)
//
// Synopsis:
//
// Arguments:
//
// Returns: void
//
// History: 11/27/1996 Shishir Pardikar [shishirp] Created.
//
// Notes:
//
//****************************************************************************
#ifdef ENABLE_MEETING_PLACE
void OnEnumMeetingPlaceNamesResult(ULONG uMsgID, PLDAP_ENUM ple)
{
COM_REQ_INFO ri;
ReqInfo_Init (&ri);
// Look for the matching request information
//
ri.uReqID = 0;
ri.uMsgID = uMsgID;
if (SUCCEEDED(g_pReqMgr->GetRequestInfo(&ri)))
{
ASSERT(WM_ILS_ENUM_MEETINGS == ri.uReqType);
// Call the appropriate object's member
//
CIlsMain *pMain = ReqInfo_GetMain (&ri);
ASSERT (pMain != NULL);
if (pMain != NULL)
{
pMain->EnumMeetingPlaceNamesResult(ri.uReqID, ple);
}
// If the enumeration was terminated, remove the pending request
//
if ((ple == NULL) ||
(ple->hResult != NOERROR))
{
ri.uReqID = 0;
ri.uMsgID = uMsgID;
g_pReqMgr->RequestDone(&ri);
// Release the objects
//
if (pMain != NULL)
pMain->Release();
};
}
else
{
DPRINTF1(TEXT("OnEnumMeetingPlaceNamesResult: No pending request for %x"),
uMsgID);
// ASSERT (0);
};
// Free the information buffer
//
if (ple != NULL)
{
::MemFree (ple);
};
return;
}
#endif // ENABLE_MEETING_PLACE
//****************************************************************************
// Routine: OnRegisterMeetingPlaceResult(ULONG uMsgID, HRESULT hr)
//
// Synopsis:
//
// Arguments:
//
// Returns: void
//
// History: 11/27/1996 Shishir Pardikar [shishirp] Created.
//
// Notes:
//
//****************************************************************************
#ifdef ENABLE_MEETING_PLACE
VOID OnRegisterMeetingPlaceResult(ULONG uMsgID, HRESULT hr)
{
COM_REQ_INFO ri;
ReqInfo_Init (&ri);
// Look for the matching request information
//
ri.uReqID = 0;
ri.uMsgID = uMsgID;
if (SUCCEEDED(g_pReqMgr->GetRequestInfo(&ri)))
{
ASSERT(WM_ILS_REGISTER_MEETING == ri.uReqType);
CIlsMeetingPlace *pMeeting = ReqInfo_GetMeeting (&ri);
ASSERT (pMeeting != NULL);
if (pMeeting != NULL)
pMeeting->RegisterResult(ri.uReqID, hr);
ri.uReqID = 0;
ri.uMsgID = uMsgID;
g_pReqMgr->RequestDone(&ri);
// Release the objects
//
if (pMeeting != NULL)
pMeeting->Release();
}
}
#endif // ENABLE_MEETING_PLACE
//****************************************************************************
// Routine: OnUnregisterMeetingPlaceResult(ULONG uMsgID, HRESULT hr)
//
// Synopsis:
//
// Arguments:
//
// Returns: void
//
// History: 11/27/1996 Shishir Pardikar [shishirp] Created.
//
// Notes:
//
//****************************************************************************
#ifdef ENABLE_MEETING_PLACE
VOID OnUnregisterMeetingPlaceResult(ULONG uMsgID, HRESULT hr)
{
COM_REQ_INFO ri;
ReqInfo_Init (&ri);
// Look for the matching request information
//
ri.uReqID = 0;
ri.uMsgID = uMsgID;
if (SUCCEEDED(g_pReqMgr->GetRequestInfo(&ri)))
{
ASSERT(WM_ILS_UNREGISTER_MEETING == ri.uReqType);
CIlsMeetingPlace *pMeeting = ReqInfo_GetMeeting (&ri);
ASSERT (pMeeting != NULL);
if (pMeeting != NULL)
pMeeting->UnregisterResult(ri.uReqID, hr);
ri.uReqID = 0;
ri.uMsgID = uMsgID;
g_pReqMgr->RequestDone(&ri);
// Release the objects
//
if (pMeeting != NULL)
pMeeting->Release();
}
}
#endif // ENABLE_MEETING_PLACE
//****************************************************************************
// Routine: OnUpdateMeetingResult(ULONG uMsgID, HRESULT hr)
//
// Synopsis:
//
// Arguments:
//
// Returns: void
//
// History: 11/27/1996 Shishir Pardikar [shishirp] Created.
//
// Notes:
//
//****************************************************************************
#ifdef ENABLE_MEETING_PLACE
VOID OnUpdateMeetingResult(ULONG uMsgID, HRESULT hr)
{
COM_REQ_INFO ri;
ReqInfo_Init (&ri);
// Look for the matching request information
//
ri.uReqID = 0;
ri.uMsgID = uMsgID;
if (SUCCEEDED(g_pReqMgr->GetRequestInfo(&ri)))
{
ASSERT(WM_ILS_SET_MEETING_INFO == ri.uReqType);
CIlsMeetingPlace *pMeeting = ReqInfo_GetMeeting (&ri);
ASSERT (pMeeting != NULL);
if (pMeeting != NULL)
pMeeting->UpdateResult(ri.uReqID, hr);
ri.uReqID = 0;
ri.uMsgID = uMsgID;
g_pReqMgr->RequestDone(&ri);
// Release the objects
//
if (pMeeting != NULL)
pMeeting->Release();
}
}
#endif // ENABLE_MEETING_PLACE
//****************************************************************************
// Routine: OnAddAttendeeResult(ULONG uMsgID, HRESULT hr)
//
// Synopsis:
//
// Arguments:
//
// Returns: void
//
// History: 11/27/1996 Shishir Pardikar [shishirp] Created.
//
// Notes:
//
//****************************************************************************
#ifdef ENABLE_MEETING_PLACE
VOID OnAddAttendeeResult(ULONG uMsgID, HRESULT hr)
{
COM_REQ_INFO ri;
ReqInfo_Init (&ri);
// Look for the matching request information
//
ri.uReqID = 0;
ri.uMsgID = uMsgID;
if (SUCCEEDED(g_pReqMgr->GetRequestInfo(&ri)))
{
ASSERT(WM_ILS_ADD_ATTENDEE == ri.uReqType);
CIlsMeetingPlace *pMeeting = ReqInfo_GetMeeting (&ri);
ASSERT (pMeeting != NULL);
if (pMeeting != NULL)
pMeeting->AddAttendeeResult(ri.uReqID, hr);
ri.uReqID = 0;
ri.uMsgID = uMsgID;
g_pReqMgr->RequestDone(&ri);
// Release the objects
//
if (pMeeting != NULL)
pMeeting->Release();
}
}
#endif // ENABLE_MEETING_PLACE
//****************************************************************************
// Routine: OnRemoveAttendeeResult(ULONG uMsgID, HRESULT hr)
//
// Synopsis:
//
// Arguments:
//
// Returns: void
//
// History: 11/27/1996 Shishir Pardikar [shishirp] Created.
//
// Notes:
//
//****************************************************************************
#ifdef ENABLE_MEETING_PLACE
VOID OnRemoveAttendeeResult(ULONG uMsgID, HRESULT hr)
{
COM_REQ_INFO ri;
ReqInfo_Init (&ri);
// Look for the matching request information
//
ri.uReqID = 0;
ri.uMsgID = uMsgID;
if (SUCCEEDED(g_pReqMgr->GetRequestInfo(&ri)))
{
ASSERT(WM_ILS_REMOVE_ATTENDEE == ri.uReqType);
CIlsMeetingPlace *pMeeting = ReqInfo_GetMeeting (&ri);
ASSERT (pMeeting != NULL);
if (pMeeting != NULL)
pMeeting->RemoveAttendeeResult(ri.uReqID, hr);
ri.uReqID = 0;
ri.uMsgID = uMsgID;
g_pReqMgr->RequestDone(&ri);
// Release the objects
//
if (pMeeting != NULL)
pMeeting->Release();
}
}
#endif // ENABLE_MEETING_PLACE
//****************************************************************************
// Routine: OnEnumAttendeesResult(ULONG uMsgID, PLDAP_ENUM ple)
//
// Synopsis:
//
// Arguments:
//
// Returns: void
//
// History: 11/27/1996 Shishir Pardikar [shishirp] Created.
//
// Notes:
//
//****************************************************************************
#ifdef ENABLE_MEETING_PLACE
VOID OnEnumAttendeesResult(ULONG uMsgID, PLDAP_ENUM ple)
{
COM_REQ_INFO ri;
ReqInfo_Init (&ri);
// Look for the matching request information
//
ri.uReqID = 0;
ri.uMsgID = uMsgID;
if (SUCCEEDED(g_pReqMgr->GetRequestInfo(&ri)))
{
ASSERT(WM_ILS_ENUM_ATTENDEES == ri.uReqType);
// Call the appropriate object's member
//
CIlsMeetingPlace *pMeeting = ReqInfo_GetMeeting (&ri);
ASSERT (pMeeting != NULL);
if (pMeeting != NULL)
pMeeting->EnumAttendeeNamesResult(ri.uReqID, ple);
// If the enumeration was terminated, remove the pending request
//
if ((ple == NULL) ||
(ple->hResult != NOERROR))
{
ri.uReqID = 0;
ri.uMsgID = uMsgID;
g_pReqMgr->RequestDone(&ri);
// Release the objects
//
if (pMeeting != NULL)
pMeeting->Release();
};
}
else
{
DPRINTF1(TEXT("OnEnumUserNamesResult: No pending request for %x"),
uMsgID);
// ASSERT (0);
};
// Free the information buffer
//
if (ple != NULL)
{
::MemFree (ple);
};
}
#endif // ENABLE_MEETING_PLACE
//****************************************************************************
// long CALLBACK ULSNotifyProc(HWND hwnd, UINT message, WPARAM wParam,
// LPARAM lParam)
//
// History:
// Wed 17-Apr-1996 11:14:03 -by- Viroon Touranachun [viroont]
// Created.
//****************************************************************************
LRESULT CALLBACK ULSNotifyProc(HWND hwnd, UINT message, WPARAM wParam,
LPARAM lParam)
{
switch (message)
{
#ifdef ENABLE_MEETING_PLACE
case WM_ILS_REGISTER_MEETING:
::OnRegisterMeetingPlaceResult(wParam, lParam);
break;
case WM_ILS_UNREGISTER_MEETING:
::OnUnregisterMeetingPlaceResult(wParam, lParam);
break;
case WM_ILS_SET_MEETING_INFO:
::OnUpdateMeetingResult(wParam, lParam);
break;
case WM_ILS_ADD_ATTENDEE:
::OnAddAttendeeResult(wParam, lParam);
break;
case WM_ILS_REMOVE_ATTENDEE:
::OnRemoveAttendeeResult(wParam, lParam);
break;
case WM_ILS_RESOLVE_MEETING:
::OnResolveMeetingPlaceResult (wParam, (PLDAP_MEETINFO_RES) lParam);
case WM_ILS_ENUM_MEETINGINFOS:
::OnEnumMeetingPlacesResult(wParam, (PLDAP_ENUM)lParam);
break;
case WM_ILS_ENUM_MEETINGS:
::OnEnumMeetingPlaceNamesResult(wParam, (PLDAP_ENUM)lParam);
break;
case WM_ILS_ENUM_ATTENDEES:
::OnEnumAttendeesResult(wParam, (PLDAP_ENUM)lParam);
break;
#endif // ENABLE_MEETING_PLACE
case WM_ILS_REGISTER_CLIENT: // lParam = hResult
case WM_ILS_UNREGISTER_CLIENT: // lParam = hResult
::OnRegisterResult(message, (ULONG)wParam, (HRESULT)lParam);
break;
case WM_ILS_SET_CLIENT_INFO: // lParam = hResult
::OnSetUserInfo (message, (ULONG)wParam, (HRESULT)lParam);
break;
case WM_ILS_REGISTER_PROTOCOL: // lParam = hResult
case WM_ILS_UNREGISTER_PROTOCOL: // lParam = hResult
::OnSetProtocol (message, (ULONG)wParam, (HRESULT)lParam);
break;
case WM_ILS_LOCAL_REGISTER: // lParam = hResult
case WM_ILS_LOCAL_UNREGISTER: // lParam = hResult
::OnLocalRegisterResult(message, (ULONG)wParam, (HRESULT)lParam);
break;
case WM_ILS_ENUM_CLIENTS: // lParam = PLDAP_ENUM
::OnEnumUserNamesResult((ULONG)wParam, (PLDAP_ENUM)lParam);
break;
case WM_ILS_RESOLVE_CLIENT: // lParam = PLDAP_CLIENTINFO_RES
::OnResolveUserResult((ULONG)wParam, (PLDAP_CLIENTINFO_RES)lParam);
break;
case WM_ILS_ENUM_CLIENTINFOS: // lParam = PLDAP_ENUM
::OnEnumUsersResult((ULONG)wParam, (PLDAP_ENUM)lParam);
break;
case WM_ILS_ENUM_PROTOCOLS: // lParam = PLDAP_ENUM
::OnEnumProtocolsResult((ULONG)wParam, (PLDAP_ENUM)lParam);
break;
case WM_ILS_RESOLVE_PROTOCOL: // lParam = PLDAP_PROTINFO_RES
::OnResolveProtocolResult((ULONG)wParam, (PLDAP_PROTINFO_RES)lParam);
break;
case WM_ILS_CLIENT_NEED_RELOGON: // wParam=fPrimary, lParam=Object Pointer
::OnClientNeedRelogon ((BOOL) wParam, (VOID *) lParam);
break;
case WM_ILS_CLIENT_NETWORK_DOWN: // wParam=fPrimary, lParam=Object
::OnClientNetworkDown ((BOOL) wParam, (VOID *) lParam);
break;
default:
return DefWindowProc(hwnd, message, wParam, lParam);
}
return 0L;
}