Please tell me, I want to write json to shared memory. StrPCopy if the text is more than 2047 character error "Access violation at 0x004074ba: address entry 0x00381000". I did not find information about the restrictions. Maybe there is another way to write json?
var
SecurityAttr: TSecurityAttributes;
SecurityDescr: TSecurityDescriptor;
begin
InitializeSecurityDescriptor(@SecurityDescr,SECURITY_DESCRIPTOR_REVISION);
SetSecurityDescriptorDacl(@SecurityDescr,True,nil,False);
SecurityAttr.nLength:=SizeOf(TSecurityAttributes);
SecurityAttr.lpSecurityDescriptor:=@SecurityDescr;
SecurityAttr.bInheritHandle:=True;
SendMMF := CreateFileMapping($FFFFFFFF, @SecurityAttr, PAGE_READWRITE, 0, 32,PChar('GlobalTest'));
if (SendMMF = 0) then
Exit;
SendData := MapViewOfFile(SendMMF, FILE_MAP_WRITE, 0, 0, 0);
if SendData = nil then
Exit;
StrPCopy(SendData, GetJson);
if Assigned(SendData) then
Exit;
if SendMMF.Size > 0 then
Exit;
UnmapViewOfFile(SendData);
SendData := nil;
CloseHandle(SendMMF);
end;
Test case
question from:
https://stackoverflow.com/questions/65918545/shared-memory-access-violation 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…