我正在使用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 *”的实体
答案 0 :(得分:0)
如果确定不会将其他代码写入其中,则可以使用const_cast<wchar_t *>(APP_SUBLAYER_NAMEW)
放弃constness,如果以后再写入该代码,则程序将崩溃。
或者您可以使用类似_wcsdup
的形式对字符串进行可写复制,也不要忘记以后再对其进行分配。
或者您可以将字符串存储在全局或静态范围的wchar_t
数组中。不是局部变量,它也会以有趣的方式崩溃。