Source code of Windows XP (NT5)
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.
|
|
#include "precomp.h"
//
// AWC.CPP
// Active Window Coordinator
//
// Copyright(c) Microsoft 1997-
//
#define MLZ_FILE_ZONE ZONE_CORE
//
// AWC_ReceivedPacket()
//
void ASShare::AWC_ReceivedPacket ( ASPerson * pasPerson, PS20DATAPACKET pPacket ) { PAWCPACKET pAWCPacket; UINT activateWhat; HWND hwnd;
DebugEntry(ASShare::AWC_ReceivedPacket);
ValidatePerson(pasPerson);
pAWCPacket = (PAWCPACKET)pPacket;
//
// We trace the person ID out here so we don't bother to do it
// elsewhere in this function on TRACE lines.
//
TRACE_OUT(("AWC_ReceivedPacket from [%d] - msg %x token %u data 0x%08x", pasPerson->mcsID, pAWCPacket->msg, pAWCPacket->token, pAWCPacket->data1));
switch (pAWCPacket->msg) { case AWC_MSG_SAS: { //
// Cause Ctrl+Alt+Del to be injected if we're in a service app,
// we're hosting, and we're controlled by the sender.
//
if ((g_asOptions & AS_SERVICE) && (pasPerson->m_caInControlOf == m_pasLocal)) { ASSERT(m_pHost); OSI_InjectCtrlAltDel(); } break; } }
DebugExitVOID(ASShare::AWC_ReceivedPacket); }
//
// FUNCTION: AWC_SendMsg
//
// DESCRIPTION:
//
// Sends a AWC message to remote system
// * Requests to activate are just to one host
// * Notifications of activation are to everyone
//
// RETURNS: TRUE or FALSE - success or failure
//
//
BOOL ASShare::AWC_SendMsg ( UINT nodeID, UINT msg, UINT data1, UINT data2 ) {
PAWCPACKET pAWCPacket; BOOL rc = FALSE; #ifdef _DEBUG
UINT sentSize; #endif
DebugEntry(ASShare::AWC_SendMsg);
//
// Allocate correct sized packet.
//
pAWCPacket = (PAWCPACKET)SC_AllocPkt(PROT_STR_UPDATES, nodeID, sizeof(AWCPACKET)); if (!pAWCPacket) { WARNING_OUT(("Failed to alloc AWC packet")); DC_QUIT; }
//
// Set up the data header for an AWC message.
//
pAWCPacket->header.data.dataType = DT_AWC;
//
// Now set up the AWC fields. By passing AWC_SYNC_MSG_TOKEN in the
// token field, we ensure that back-level remotes will never drop our
// packets.
//
pAWCPacket->msg = (TSHR_UINT16)msg; pAWCPacket->data1 = data1; pAWCPacket->data2 = data2; pAWCPacket->token = 0;
//
// Send the packet.
//
if (m_scfViewSelf) AWC_ReceivedPacket(m_pasLocal, &(pAWCPacket->header));
#ifdef _DEBUG
sentSize = #endif // _DEBUG
DCS_CompressAndSendPacket(PROT_STR_UPDATES, nodeID, &(pAWCPacket->header), sizeof(*pAWCPacket));
TRACE_OUT(("AWC packet size: %08d, sent: %08d", sizeof(*pAWCPacket), sentSize));
rc = TRUE;
DC_EXIT_POINT: DebugExitDWORD(ASShare::AWC_SendMsg, rc); return(rc); }
|