typedef struct _KALPC_MESSAGE
{
    LIST_ENTRY Entry;
    void *ExtensionBuffer;
    unsigned __int64 ExtensionBufferSize;
    union
    {
        EPROCESS *QuotaProcess;
        void *QuotaBlock;
    };
    long SequenceNo;
    union
    {
        struct
        {
            unsigned long QueueType : 2;
            unsigned long QueuePortType : 4;
            unsigned long Canceled : 1;
            unsigned long Ready : 1;
            unsigned long ReleaseMessage : 1;
            unsigned long SharedQuota : 1;
            unsigned long ReplyWaitReply : 1;
            unsigned long OwnerPortReference : 1;
            unsigned long ReserveReference : 1;
            unsigned long ReceiverReference : 1;
            unsigned long ViewAttributeRetrieved : 1;
            unsigned long InDispatch : 1;
        } s1;
        unsigned long State;
    } u1;
    ALPC_PORT *CancelSequencePort;
    ALPC_PORT *CancelQueuePort;
    long CancelSequenceNo;
    LIST_ENTRY CancelListEntry;
    ETHREAD *WaitingThread;
    KALPC_RESERVE *Reserve;
    ALPC_PORT *PortQueue;
    ALPC_PORT *OwnerPort;
    KALPC_MESSAGE_ATTRIBUTES MessageAttributes;
    void *DataUserVa;
    void *DataSystemVa;
    ALPC_COMMUNICATION_INFO *CommunicationInfo;
    ALPC_PORT *ConnectionPort;
    ETHREAD *ServerThread;
    PORT_MESSAGE PortMessage;
} KALPC_MESSAGE, *PKALPC_MESSAGE;