错误代码WFP:状态错误(活动)E0513无法将类型“ const wchar_t *”的值分配给类型“ wchar_t *”的实体

时间:2019-05-18 17:15:06

标签: c++ wfp

我正在使用Visual Studio Community 2019,SDK和WDK预览。

  

E0513无法将类型为“ const wchar_t *”的值分配给类型为“ wchar_t *”的实体。

如何解决?

SubLayer.displayData.name = L"APPDinsFirewall";
SubLayer.displayData.description = L"APPDinsFirewall";

下面的代码WFP:

DWORD AppFilter::appBindInterface() {

    DWORD ErrorCode = ERROR_BAD_COMMAND;
    //RPC - Remote Procedure Call status Gọi hàm thủ tục từ xa
    RPC_STATUS rpcStatus = {0};
    //Sublayer structure
    //FWPM_SUBLAYER0 SubLayer = {0};
    FWPM_SUBLAYER0 SubLayer;
    memset(&SubLayer, 0, sizeof(SubLayer));
    //Tạo một GUID cho SubLayer
    rpcStatus = UuidCreate(&SubLayer.subLayerKey);
    if (rpcStatus == NO_ERROR) {
        /* Lưu GUID để sử dụng sau này. 
        Sao chép bộ nhớ từ SubLayer sang appsubGUID từ size của subLayerKey
        */
        CopyMemory(&appsubGUID, &SubLayer.subLayerKey, sizeof(SubLayer.subLayerKey));
        //Gán thông tin trong SubLayer
        SubLayer.displayData.name = APP_SUBLAYER_NAMEW;
        SubLayer.displayData.description = APP_SUBLAYER_NAMEW;
        SubLayer.flags = 0;
        SubLayer.weight = 0x100;
        //Add SubLayer
        ErrorCode = FwpmSubLayerAdd0(appEngineHandle, &SubLayer, NULL);
    }
    return ErrorCode;
}
  

E0513无法将类型为“ const wchar_t *”的值分配给类型为“ wchar_t *”的实体

1 个答案:

答案 0 :(得分:0)

如果确定不会将其他代码写入其中,则可以使用const_cast<wchar_t *>(APP_SUBLAYER_NAMEW)放弃constness,如果以后再写入该代码,则程序将崩溃。

或者您可以使用类似_wcsdup的形式对字符串进行可写复制,也不要忘记以后再对其进行分配。

或者您可以将字符串存储在全局或静态范围的wchar_t数组中。不是局部变量,它也会以有趣的方式崩溃。

相关问题