⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 scapi.cxx

📁 Windows CE 6.0 Server 源码
💻 CXX
📖 第 1 页 / 共 5 页
字号:
				hRes = MQ_ERROR_ILLEGAL_PROPERTY_VALUE;
			break;

		case PROPID_M_DEST_QUEUE:
            if (! SetStringIndex(pProp,i,&iDestQueueNdx ))
				hRes = MQ_ERROR_ILLEGAL_PROPERTY_VALUE;
			break;

		case PROPID_M_DEST_QUEUE_LEN:
            if (! SetLengthIndex(pProp,i,&iDestQueueLenNdx))
				hRes = MQ_ERROR_ILLEGAL_PROPERTY_VALUE;
			break;

		case PROPID_M_EXTENSION:
            if (! SetArrayPtrIndex(pProp, i, &iExtNdx))
				hRes = MQ_ERROR_ILLEGAL_PROPERTY_VALUE;
			break;

		case PROPID_M_EXTENSION_LEN:
            if (! SetLengthIndex(pProp,i,&iExtSizeNdx))
				hRes = MQ_ERROR_ILLEGAL_PROPERTY_VALUE;
			break;

		case PROPID_M_JOURNAL:
            if (! SetUI1(pProp,pPacket->pImage->sect.pUserHeader->GetAuditing()))
				hRes = MQ_ERROR_ILLEGAL_PROPERTY_VALUE;
			break;

		case PROPID_M_LABEL:
            if (! SetStringIndex(pProp, i, &iLabelNdx))
				hRes = MQ_ERROR_ILLEGAL_PROPERTY_VALUE;
			break;

		case PROPID_M_LABEL_LEN:
            if (! SetLengthIndex(pProp, i, &iLabelLenNdx))
				hRes = MQ_ERROR_ILLEGAL_PROPERTY_VALUE;
			break;

		case PROPID_M_PRIORITY:
            if (! SetUI1(pProp,pPacket->pImage->sect.pBaseHeader->GetPriority()))
				hRes = MQ_ERROR_ILLEGAL_PROPERTY_VALUE;
			break;

		case PROPID_M_RESP_QUEUE:
            if (! SetStringIndex(pProp, i, &iRespQueueNdx))
				hRes = MQ_ERROR_ILLEGAL_PROPERTY_VALUE;
			break;

		case PROPID_M_RESP_QUEUE_LEN:
            if (! SetLengthIndex(pProp, i, &iRespQueueLenNdx))
				hRes = MQ_ERROR_ILLEGAL_PROPERTY_VALUE;
			break;

		case PROPID_M_TIME_TO_BE_RECEIVED:
            if (! SetUI4(pProp,pPacket->pImage->sect.pUserHeader->GetTimeToLiveDelta()))
				hRes = MQ_ERROR_ILLEGAL_PROPERTY_VALUE;
			break;

		case PROPID_M_TIME_TO_REACH_QUEUE:
			if (! SetUI4(pProp,pPacket->pImage->sect.pBaseHeader->GetAbsoluteTimeToQueue()))
				hRes = MQ_ERROR_ILLEGAL_PROPERTY_VALUE;
			break;

		case PROPID_M_TRACE:
            if (! SetUI1(pProp,pPacket->pImage->sect.pBaseHeader->GetTraced()))
				hRes = MQ_ERROR_ILLEGAL_PROPERTY_VALUE;
			break;

		case PROPID_M_XACT_STATUS_QUEUE:
			if (! VerifyString(pProp))
				hRes = MQ_ERROR_ILLEGAL_PROPERTY_VALUE;
			else
				copyData.WriteStrToProc(pProp->pwszVal, szEmpty, 1, &hRes);
			break;

		case PROPID_M_XACT_STATUS_QUEUE_LEN:
            if (! SetUI4(pProp,0))
				hRes = MQ_ERROR_ILLEGAL_PROPERTY_VALUE;
			break;

		case PROPID_M_VERSION:
            if (! SetUI4(pProp,pPacket->pImage->sect.pBaseHeader->GetVersion()))
				hRes = MQ_ERROR_ILLEGAL_PROPERTY_VALUE;
			break;

		case PROPID_M_SRC_MACHINE_ID:
			if (! VerifyGuid(pProp))
				hRes = MQ_ERROR_ILLEGAL_PROPERTY_VT;
			else
				copyData.WriteGUIDToProc(pProp->puuid,pPacket->pImage->sect.pUserHeader->GetSourceQM(),&hRes);
			break;

		case PROPID_M_SIGNATURE:
			break;

		case PROPID_M_SIGNATURE_LEN:
            if (! SetUI4(pProp,0))
				hRes = MQ_ERROR_ILLEGAL_PROPERTY_VALUE;
			break;

		case PROPID_M_SENTTIME:
            if (! SetUI4(pProp,pPacket->pImage->sect.pUserHeader->GetSentTime()))
				hRes = MQ_ERROR_ILLEGAL_PROPERTY_VALUE;
			break;

		case PROPID_M_SENDERID_LEN:
            if (! SetUI4(pProp,0))
				hRes = MQ_ERROR_ILLEGAL_PROPERTY_VALUE;
			break;

		case PROPID_M_SENDERID_TYPE:
            if (! SetUI4(pProp,MQMSG_SENDERID_TYPE_NONE))
				hRes = MQ_ERROR_ILLEGAL_PROPERTY_VALUE;
			break;

		case PROPID_M_SENDERID:
			break;

		case PROPID_M_SENDER_CERT_LEN:
            if (! SetUI4(pProp,0))
				hRes = MQ_ERROR_ILLEGAL_PROPERTY_VALUE;
			break;

		case PROPID_M_SENDER_CERT:
			break;

		case PROPID_M_PROV_NAME_LEN:
            if (! SetUI4(pProp,0))
				hRes = MQ_ERROR_ILLEGAL_PROPERTY_VALUE;
			break;

		case PROPID_M_PROV_NAME:
			if (! VerifyString(pProp))
				hRes = MQ_ERROR_ILLEGAL_PROPERTY_VALUE;
			else
                copyData.WriteStrToProc(pProp->pwszVal, szEmpty, 1, &hRes);
			break;

		case PROPID_M_PRIV_LEVEL:
            if (! SetUI4(pProp,MQMSG_PRIV_LEVEL_NONE))
				hRes = MQ_ERROR_ILLEGAL_PROPERTY_VALUE;
			break;

		case PROPID_M_MSGID:
            if (! VerifyArrayPtr(pProp,sizeof(OBJECTID)))
                hRes = MQ_ERROR_ILLEGAL_PROPERTY_VALUE;
			else {
                OBJECTID messageId;
                pPacket->pImage->sect.pUserHeader->GetMessageID(&messageId);
				copyData.WriteBufToProc(pProp->caub.pElems,(UCHAR*)&messageId,
					sizeof(OBJECTID), &hRes);
			}
			break;

		case PROPID_M_ARRIVEDTIME:
            if (! SetUI4(pProp,pPacket->tCreationTime))
				hRes = MQ_ERROR_ILLEGAL_PROPERTY_VALUE;
			break;

		case PROPID_M_DEST_SYMM_KEY:
			break;

		case PROPID_M_DEST_SYMM_KEY_LEN:
			if (! VerifyString(pProp))
				hRes = MQ_ERROR_ILLEGAL_PROPERTY_VALUE;
			else
                copyData.WriteStrToProc(pProp->pwszVal, szEmpty,1, &hRes);
			break;

		case PROPID_M_CONNECTOR_TYPE:
			if (! VerifyGuid(pProp))
				hRes = MQ_ERROR_ILLEGAL_PROPERTY_VT;
			else {
				GUID guid;
				memset(&guid,0,sizeof(GUID));
				copyData.WriteGUIDToProc(pProp->puuid, &guid, &hRes);
			}
			break;

		case PROPID_M_AUTHENTICATED:
            if (! SetUI4(pProp,0))
				hRes = MQ_ERROR_ILLEGAL_PROPERTY_VALUE;
			break;

		case PROPID_M_HASH_ALG:
		case PROPID_M_ENCRYPTION_ALG:
		case PROPID_M_PROV_TYPE:
		case PROPID_M_SECURITY_CONTEXT:
			hRes = MQ_ERROR_COMPUTER_DOES_NOT_SUPPORT_ENCRYPTION;
			break;

		case PROPID_M_FIRST_IN_XACT:
		    {
				CXactHeader *pXactHeader = pPacket->pImage->sect.pXactHeader;
				BOOL fFirstInXact = pXactHeader ? pXactHeader->GetFirstInXact() : FALSE;
				if (! SetUI1(pProp,fFirstInXact))
					hRes = MQ_ERROR_ILLEGAL_PROPERTY_VALUE;
			}
			break;

		case PROPID_M_LAST_IN_XACT:
            {         
				CXactHeader *pXactHeader = pPacket->pImage->sect.pXactHeader;
				BOOL fLastInXact = pXactHeader ? pXactHeader->GetLastInXact() : FALSE;
                if (! SetUI1(pProp,fLastInXact))
                    hRes = MQ_ERROR_ILLEGAL_PROPERTY_VALUE;
			}
			break;

		case PROPID_M_XACTID:
			if (! VerifyArrayPtr(pProp, sizeof(OBJECTID)))
				hRes = MQ_ERROR_ILLEGAL_PROPERTY_SIZE;
			else {
				CXactHeader *pXactHeader = pPacket->pImage->sect.pXactHeader;
				OBJECTID xactID;

				if (pXactHeader) {
					xactID.Lineage    = *pPacket->pImage->sect.pUserHeader->GetSourceQM();
					xactID.Uniquifier = pXactHeader->GetXactIndex();
				}
				else {
					memset(&xactID,0,sizeof(OBJECTID));
				}

				copyData.WriteBufToProc(pProp->caub.pElems, (UCHAR*)&xactID, sizeof(xactID), &hRes);
			}
			break;

		case PROPID_M_SOAP_ENVELOPE:
            if (! SetStringIndex(pProp,i,&iSoapEnvNdx))
				hRes = MQ_ERROR_ILLEGAL_PROPERTY_VALUE;
			break;

		case PROPID_M_SOAP_ENVELOPE_LEN:
            if (! SetLengthIndex(pProp, i, &iSoapEnvLenNdx))
				hRes = MQ_ERROR_ILLEGAL_PROPERTY_VALUE;
			break;

		case PROPID_M_COMPOUND_MESSAGE:
            if (! SetArrayPtrIndex(pProp, i, &iCompoundMsgNdx))
				hRes = MQ_ERROR_ILLEGAL_PROPERTY_VALUE;
			break;

		case PROPID_M_COMPOUND_MESSAGE_SIZE:
			if (! SetLengthIndex(pProp, i, &iCompoundMsgLenNdx))
				hRes = MQ_ERROR_ILLEGAL_PROPERTY_VALUE;
			break;

		case PROPID_M_SOAP_FWD_VIA:
            if (! SetVariantArrayPtrIndex(pProp, i, &iSoapFwdViaNdx))
				hRes = MQ_ERROR_ILLEGAL_PROPERTY_VALUE;
			break;

		case PROPID_M_SOAP_FWD_VIA_SIZE:
			if (! SetLengthIndex(pProp, i, &iSoapFwdViaLenNdx))
				hRes = MQ_ERROR_ILLEGAL_PROPERTY_VALUE;
			break;

		case PROPID_M_SOAP_REV_VIA:
            if (! SetVariantArrayPtrIndex(pProp, i, &iSoapRevViaNdx))
				hRes = MQ_ERROR_ILLEGAL_PROPERTY_VALUE;
			break;

		case PROPID_M_SOAP_REV_VIA_SIZE:
			if (! SetLengthIndex(pProp, i, &iSoapRevViaLenNdx))
				hRes = MQ_ERROR_ILLEGAL_PROPERTY_VALUE;
			break;

		case PROPID_M_SOAP_FROM:
            if (! SetStringIndex(pProp, i, &iSoapFromNdx))
				iSoapFromNdx = i;
			break;

		case PROPID_M_SOAP_FROM_LEN:
            if (! SetLengthIndex(pProp, i, &iSoapFromLenNdx))
				hRes = MQ_ERROR_ILLEGAL_PROPERTY_VALUE;
			break;

		case PROPID_M_SOAP_RELATES_TO:
            if (! SetStringIndex(pProp, i, &iSoapRelatesToNdx))
				hRes = MQ_ERROR_ILLEGAL_PROPERTY_VT;
			break;

		case PROPID_M_SOAP_RELATES_TO_LEN:
            if (! SetLengthIndex(pProp, i, &iSoapRelatesToLenNdx))
				hRes = MQ_ERROR_ILLEGAL_PROPERTY_VALUE;
			break;

		default:
			hRes = MQ_ERROR_PROPERTY;
		}

		if (pMsgProps->aStatus)
			pMsgProps->aStatus[i] = hRes;
	}

	if (FAILED(hRes))
		return hRes;

	QUEUE_FORMAT qft;
	//
	//	Admin queue
	//
	//
	hRes = MQ_OK;

	if (pPacket->pImage->sect.pUserHeader->GetAdminQueue (&qft))
		hRes = scapi_FillQueueInfo (iAdminQueueLenNdx, iAdminQueueNdx, pMsgProps, &qft, hCallerProc);
	else if (iAdminQueueLenNdx >= 0)
		pMsgProps->aPropVar[iAdminQueueLenNdx].ulVal = 0;

	if (FAILED(hRes))
		return hRes;

	//
	//	Response queue
	//
	hRes = MQ_OK;

	if (pPacket->pImage->sect.pUserHeader->GetResponseQueue (&qft))
		hRes = scapi_FillQueueInfo (iRespQueueLenNdx, iRespQueueNdx, pMsgProps, &qft, hCallerProc);
	else if (iRespQueueLenNdx >= 0)
		pMsgProps->aPropVar[iRespQueueLenNdx].ulVal = 0;

	if (FAILED(hRes))
		return hRes;

	//
	//	Dest queue
	//
	hRes = MQ_OK;

	if (pPacket->pImage->sect.pUserHeader->GetDestinationQueue (&qft))
		hRes = scapi_FillQueueInfo (iDestQueueLenNdx, iDestQueueNdx, pMsgProps, &qft, hCallerProc);
	else if (iDestQueueLenNdx >= 0)
		pMsgProps->aPropVar[iDestQueueLenNdx].ulVal = 0;

	if (FAILED(hRes))
		return hRes;

	//
	//	Label
	//
	scapi_FillStringInfo(iLabelLenNdx, iLabelNdx, pMsgProps, 
	                     pPacket->pImage->sect.pPropHeader->GetTitlePtr(),
	                     pPacket->pImage->sect.pPropHeader->GetTitleLength(),
	                     hCallerProc);
	if (FAILED(hRes))
		return hRes;

	//
	//	Body
	//
	hRes = scapi_FillArrayInfo(iBodySizeNdx,iBodyNdx,pMsgProps,
	                   pCompoundMessage ? pCompoundMessage->GetPointerToBody() : pPacket->pImage->sect.pPropHeader->GetBodyPtr(),
	                   pCompoundMessage ? pCompoundMessage->GetBodySizeInBytes() : pPacket->pImage->sect.pPropHeader->GetBodySize (),
	                   hCallerProc);
    if (FAILED(hRes))
        return hRes;

	//
	//	Extension
	//
    scapi_FillArrayInfo(iExtSizeNdx,iExtNdx,pMsgProps,
                        pPacket->pImage->sect.pPropHeader->GetMsgExtensionPtr(),
                        pPacket->pImage->sect.pPropHeader->GetMsgExtensionSize(),
                        hCallerProc);
    if (FAILED(hRes))
        return hRes;
	
	//
	//  SRMP Envelope
	//
	CSrmpEnvelopeHeader *pSrmpEnvHead = pPacket->pImage->sect.pSrmpEnvelopeHeader;
    
	scapi_FillStringInfo(iSoapEnvLenNdx, iSoapEnvNdx, pMsgProps, 
	                     pSrmpEnvHead ? pPacket->pImage->sect.pSrmpEnvelopeHeader->GetData() : NULL,
	                     pSrmpEnvHead ? pPacket->pImage->sect.pSrmpEnvelopeHeader->GetDataLengthInWCHARs() : 0,
	                     hCallerProc);
    if (FAILED(hRes))
        return hRes;

	// 
	// Compound Message
	//
	CCompoundMessageHeader *pCmpndMsgHead = pPacket->pImage->sect.pCompoundMessageHeader;
	scapi_FillArrayInfo(iCompoundMsgLenNdx, iCompoundMsgNdx, pMsgProps, 
                        pCmpndMsgHead ? pCmpndMsgHead->GetPointerToData() : 0,
                        pCmpndMsgHead ? pCmpndMsgHead->GetDataSizeInBytes() : 0, 
                        hCallerProc);
    if (FAILED(hRes))
        return hRes;

	//
	// SOAP <fwd><via> entries.
	//
	ULONG cbSoapFwdViaLen       = (iSoapFwdViaLenNdx < 0) ? 0 : pMsgProps->aPropVar[iSoapFwdViaLenNdx].ulVal;
	ULONG cbSoapFwdViaRequired  = 0;
	ULONG cFwdElements          = 0;

	if (iSoapFwdViaLenNdx >= 0) {
		cbSoapFwdViaRequired = CalcFwdRevViaSectionSize(pPacket->pImage->sect.pFwdViaHeader,&cFwdElements);
		pMsgProps->aPropVar[iSoapFwdViaLenNdx].ulVal = cbSoapFwdViaRequired;
	}

	if (iSoapFwdViaNdx >= 0 && pPacket->pImage->sect.pFwdViaHeader) {
		if (cbSoapFwdViaLen < cbSoapFwdViaRequired)
			return MQ_ERROR_BUFFER_OVERFLOW;

		if (! SetFwdRevViaSection(pPacket->pImage->sect.pFwdViaHeader,
			                      &pMsgProps->aPropVar[iSoapFwdViaNdx].capropvar,
			                      cFwdElements,cbSoapFwdViaRequired,hCallerProc,&hRes))
			return hRes;
	}

	//
	// SOAP <rev><via> entries.
	//
	ULONG cbSoapRevViaLen = (iSoapRevViaLenNdx < 0) ? 0 : pMsgProps->aPropVar[iSoapRevViaLenNdx].ulVal;
	ULONG cbSoapRevViaRequired  = 0;
	ULONG cRevElements          = 0;

	if (iSoapRevViaLenNdx >= 0) {
		cbSoapRevViaRequired = CalcFwdRevViaSectionSize(pPacket->pImage->sect.pRevViaHeader,&cRevElements);
		pMsgProps->aPropVar[iSoapRevViaLenNdx].ulVal = cbSoapRevViaRequired;
	}

	if (iSoapRevViaNdx >= 0 && pPacket->pImage->sect.pRevViaHeader) {
		if (cbSoapRevViaLen < cbSoapRevViaRequired)
			return MQ_ERROR_BUFFER_OVERFLOW;

		if (! SetFwdRevViaSection(pPacket->pImage->sect.pRevViaHeader,
			                      &pMsgProps->aPropVar[iSoapRevViaNdx].capropvar,
			                      cRevElements,cbSoapRevViaRequired,hCallerProc,&hRes))
			return hRes;
	}

	//
	// SOAP <from> element
	//
	CSoapExtSection *pSoapExt = pPacket->pImage->sect.pSoapExtHeaderSection;
	scapi_FillStringInfo(iSoapFromLenNdx, iSoapFromNdx, pMsgProps, 
	                     pSoapExt ?  pSoapExt->GetFrom() : 0,
	                     pSoapExt ?  pSoapExt->GetFromLengthInWCHARs() : 0,
	                     hCallerProc);


	// 
	// SOAP <relatesTo> element
	//
	scapi_FillStringInfo(iSoapFromLenNdx, iSoapFromNdx, pMsgProps, 
	                     pSoapExt ?  pSoapExt->GetRelatesTo() : 0,
	                     pSoapExt ?  pSoapExt->GetRelatesToLengthInWCHARs() : 0,
	                     hCallerProc);

	//
	//	We've read it, now we free the packet.
	//
	if ((hRes == MQ_OK) && (dwAction == MQ_ACTION_RECEIVE)) {
#if defined (SC_VERBOSE)
		scerror_DebugOut (VERBOSE_MASK_IO, L"Message read successfully, accepting and advancing...\n");
#endif

		pHInfo->c.fPosValid = FALSE;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -