我正在开发将加密传递的字符串的COM对象。它是从PHP调用的。 我没有得到如何将COM中的值返回给PHP。我试过跟随代码,也许它不起作用。
STDMETHODIMP CATLObject::EncryptURL(VARIANT* sURLString, VARIANT* sEncryptedValue)
{
URLEncryption oURLEncryption;
char sRequestString[MAX_NAME] = "abcbbefekjdss dsf dsk fkjds fk sd";
char sEncrytedRequestStrin
g[MAX_NAME] = "";
char sDecrytedRequestString[MAX_NAME] = "";
oURLEncryption.EncryptQuery(sRequestString, sEncrytedRequestString);
KeyValue oKeyValue1;
KeyValue oParameterKeyValue;
oKeyValue1.ParseKeyValueString(sEncrytedRequestString, '&', true);
string sParameter = oKeyValue1.GetValue("sp");
string sCheckSum = oKeyValue1.GetValue("chk");
oURLEncryption.DecryptQuery(sParameter, sCheckSum, (void *)&oParameterKeyValue);
string sCidAudio = oParameterKeyValue.GetValue("cid_audio");
string sEUid = oParameterKeyValue.GetValue("euid");
printf("sCidAudio = %s\n", sCidAudio.c_str());
printf("sEUid = %s\n\n", sEUid.c_str());
// Create an instance of the MEMORYSTATUSEX structure
MEMORYSTATUSEX memstatex;
// Specify the length of the structure
memstatex.dwLength = sizeof(memstatex);
// Call the GlobalMemoryStatusEx function and pass to it
// a reference to our MEMORYSTATUSEX instance
::GlobalMemoryStatusEx(&memstatex);
// Set the ulVal (unsigned long value) of the VARIANT parameter
// passed by reference to the function with the dwMemoryLoad
// value of the MEMORYSTATUEX instance which specifies the
// approximate percentage of the physical memory currently
// in use.
sURLString->ulVal = memstatex.dwMemoryLoad;
sEncryptedValue->bstrVal = L"Output from DLL!!!";
return S_OK;
}
从PHP我尝试按照以下方式获取返回值
$testConnection = new COM("URLEncryption.ATLObject");
$sURLString = new VARIANT(0, VT_UI4);
$sEncryptedValue = new VARIANT(0, VT_UI4);
$testConnection->EncryptURL($sURLString,$sEncryptedValue);
答案 0 :(得分:0)
我认为这是一个愚蠢的错字:
new COM("URLEncryption.ATLObject")
与
相比STDMETHODIMP CATLObject::EncryptURL
^^^
我要说new COM
应改为:
$testConnection = new COM("URLEncryption.CATLObject");