0

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

E0513 “const wchar_t *”类型的值不能分配给“wchar_t *”类型的实体。

如何解决?

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

代码世界粮食计划署如下:

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 *”类型的实体

4

1 回答 1

0

如果你确定其他代码不会写入它,你可以用 constness 去掉const_cast<wchar_t *>(APP_SUBLAYER_NAMEW),如果代码稍后写入它,你的程序会崩溃。

或者你可以用类似的东西制作一个可写的字符串副本_wcsdup,你也不应该忘记稍后释放它。

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

于 2019-05-18T17:37:28.063 回答