📄 scapi.cxx
字号:
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 + -