im developing a database appliaction. there is the main database process that does the processing on the requests. a dll holds all the nessasary dabase code. user apps call apis in the database dll.

EDIT: i see that there is a thred in main about someting similar, this a APP to APP problem.

what needs to be done is the data from the request needs to be sent to the exe from the dll code that resides in the user /and database processes. the data might be large so i ruled out a dll share segment.
i need ways of getting that data to the main database app (in order) pipes, shared memory etc etc. i want basicly the fastest and easyst to use.

1 idea is to open a sock and send the data via localhost.(stability issus)
2 is memory sharing. which i would have so sync all access with it. which i dont know how to do interprocessesly. and i also dont know how to get that shared memory in all apps that currently have the dll loaded.
Posted on 2003-08-02 00:13:10 by Qages
I came up with a simple idea that might work, use GlobalAlloc and pass the buffer pointer to your application.
Posted on 2003-08-02 01:54:12 by Delight
each process is seperate. a pointer to memory in app1 is not valid in app 2.
Posted on 2003-08-02 17:32:07 by Qages
You could try mapping one process into the other's space by using something like VirtualProtect / VirtualAlloc or some other associated cross-rva hack. Sorry for saying hack, lol. You could also think other dirty thoughts like EAT/EDT hacks to remove the security descriptor between your processes or to effectively make one of them God of Flat Ram by giving it universal read/write access.
Sorry I couldn't be more specific with api-based solutions, but folks around this forum get edgy when your hat is grey, even if it's just dirt from the road.
Posted on 2003-08-03 06:20:10 by Homer
Qages, how about using mapped files for shared memory? You can map the paging file (handle 0xFFFFFFFF). Using a named memory map and a named mutex for synch, it should be fast enough, reliable and compatible with different Windows versions.

Also take a look at this thread, it has many ideas to accomplish the same.
Posted on 2003-08-04 11:33:12 by QvasiModo
it cant be on the hard drive, defeats the purpose of me asking this. but i think im going with socks of a way to do it because ill eventaully make the database accessable on a network.
Posted on 2003-08-05 12:28:48 by Qages
Using sockets is a good idea. You could use a mapping object to make it accessible in a single computer, and provide an interface for the network. Also, you could use named pipes... there's another thread in Main about this too.
Posted on 2003-08-06 13:55:08 by QvasiModo
Named pipes.
Posted on 2003-08-06 14:04:05 by SFP