PHP的COM对象方法

时间:2016-08-12 10:28:15

标签: php c++ com

我正在开发将加密传递的字符串的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);

1 个答案:

答案 0 :(得分:0)

我认为这是一个愚蠢的错字:

new COM("URLEncryption.ATLObject")

相比
STDMETHODIMP CATLObject::EncryptURL
            ^^^

我要说new COM应改为:

$testConnection = new COM("URLEncryption.CATLObject");