Welcome to WuJiGu Developer Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
595 views
in Technique[技术] by (71.8m points)

delphi - Shared memory - access violation

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

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Answer

0 votes
by (71.8m points)
Waitting for answers

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to WuJiGu Developer Q&A Community for programmer and developer-Open, Learning and Share
...