Stateless URI-named IPC mechanism


HANDLE
IpcRegister(
    IN HANDLE Parent OPTIONAL,
    IN PWSTR pUrl,
    IN ULONG Flags
    );

typedef struct _IPC_MESSAGE
{
    ULONG UriLength;
    ULONG BufferLength;
    // WCHAR Uri[UriLength];
    // UCHAR Alignment[Varies];
    // UCHAR Buffer[BufferLength];

} IPC_MESSAGE, *PIPC_MESSAGE;

#define IPC_MESSAGE_TO_URI(pMessage)                                    \
    (PWCHAR)((pMessage) + 1)
    
#define IPC_MESSAGE_TO_BUFFER(pMessage)                                 \
    ALIGN_UP_POINTER((((PUCHAR)(pMessage)) + (pMessage)->UriLength), PVOID)


ULONG
IpcSendMessage(
    IN HANDLE IpcHandle,
    IN ULONG Flags,
    IN PIPC_MESSAGE pMessage,
    IN ULONG MessageLength
    );

ULONG
IpcReceiveMessage(
    IN HANDLE IpcHandle,
    IN ULONG Flags,
    OUT PIPC_MESSAGE pMessage,
    IN ULONG MessageLength,
    OUT PULONG pBytesReceived OPTIONAL,
    IN LPOVERLAPPED pOverlapped OPTIONAL
    );


??? Separate "scheme handlers" ???


??? App Pools & Config Groups ???