Advanced local procedure call (ALPC)

Advanced Local Procedure Call (ALPC) is a high-performance message-passing mechanism in Windows that enables efficient inter-process communication (IPC) between client and server processes. ALPC replaced the older Local Procedure Call (LPC) mechanism and provides optimized communication channels with multiple message-passing techniques based on data size requirements.

How ALPC Works

The ALPC mechanism follows a client-server communication model. The server process publishes a globally visible connection-port object that clients can access to request services. When a client needs services from a subsystem, it opens a handle to the server's connection-port and sends a connection request.

ALPC Communication Channel Setup Client Process Server Process Connection Port Object Client Port Server Port Request Channel Private Communication Channel

Upon receiving the connection request, the server creates a communication channel consisting of a pair of private communication ports − one for client-to-server messages and another for server-to-client messages. The server then returns a handle to this channel back to the client. These channels support a callback mechanism, allowing both client and server to accept requests even when expecting replies.

Message-Passing Techniques

When an ALPC channel is established, one of three message-passing techniques is selected based on the message size and performance requirements −

Small to Medium Messages (up to 63 KB)

For smaller messages, the port's message queue serves as intermediate storage. Messages are copied directly from one process to the other through the queue. This technique provides good performance for typical IPC scenarios without requiring additional memory management.

Large Messages

For larger messages that exceed the queue capacity, ALPC creates a shared memory section object for the channel. Instead of copying the entire message, only a pointer and size information are sent through the port's message queue. The actual data resides in the shared memory section, where the sender places data and the receiver accesses it directly, eliminating expensive copy operations.

Direct Memory Access

The third technique uses specialized APIs that read and write directly into a process's address space. ALPC provides synchronization functions that allow a server to access data directly in the client's memory space. This method offers the highest performance for specific scenarios where direct memory access is feasible.

Comparison of Message-Passing Techniques

Technique Message Size Storage Method Performance
Queue-based Up to 63 KB Message queue with copying Good for small messages
Shared Memory Large messages Shared memory section Efficient for large data
Direct Access Variable Direct memory access Highest performance

Key Features

  • Connection-oriented − Establishes dedicated channels between client and server processes

  • Bidirectional communication − Supports both client-to-server and server-to-client messaging

  • Callback support − Enables asynchronous communication patterns

  • Size-adaptive − Automatically selects optimal technique based on message size

  • High performance − Used by RPC for optimized scenarios requiring fast IPC

Common Use Cases

  • Remote Procedure Call (RPC) − ALPC is commonly used by RPC implementations to achieve higher performance

  • Windows subsystem communication − Various Windows subsystems use ALPC for internal communication

  • Service-client interactions − Windows services communicate with client applications through ALPC channels

It's worth noting that the Win32 window manager uses its own specialized form of message passing, which operates independently of the executive ALPC facilities and is optimized for GUI-related communications.

Conclusion

Advanced Local Procedure Call (ALPC) provides an efficient and flexible IPC mechanism in Windows through its adaptive message-passing techniques. By automatically selecting the optimal communication method based on data size, ALPC ensures high performance across different scenarios while maintaining the simplicity of a connection-oriented model.

Updated on: 2026-03-17T09:01:38+05:30

2K+ Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements