Knowledge

Local Inter-Process Communication

Source 📝

178:
For messages longer than 256 bytes a shared memory section must be used to transfer data, which the (A)LPC service maps between the sending and receiving processes. First the sender places data into the shared memory, and then sends a notification (e.g. a small message, using the first method of
190:
instead of synchronous request/reply mechanism that LPC exclusively uses. This enables ALPC ports high-speed communication which automatically balances the number of messages and threads. Additionally, ALPC messages can be batched together so as to minimize user-mode/kernel-mode switches.
124:
to use them) and allow identification of the process on the other side of the connection. Individual messages are also securable: applications can set per-message SIDs, and also test for changes of the security context in the token associated with the (A)LPC message.
229:
As mentioned, Microsoft RPC can use (A)LPC as a transport when the client and server are both on the same machine. Many services that are designed to communicate only on the local computer use (A)LPC as the only transport through RPC. The implementation of remote
203:). Quick LPC was introduced in version 3.51 of Windows NT to make these calls faster. This method was largely abandoned in version 4.0 in favor of moving the performance critical server portions into kernel mode (win32k.sys). 163:
The client receives a handle to the client communication port, and server receives a handle to the server communication port, and the inter-process communication channel is established.
199:(A)LPC is used heavily in communication between internal subsystems in Windows NT. The Win32 subsystem uses (A)LPC heavily for communication between client and the subsystem server ( 275: 413: 182:
Server can directly read and write data from the client's address space, when the amount of data is too large to fit in a shared section.
207: 388: 96:, and as such is not available to applications for direct use. However, it can be used indirectly in the following instances: 373: 418: 17: 235: 348: 200: 86: 171:
For short messages (fewer than 256 bytes) the kernel copies the message buffers between processes, from the
231: 187: 175:
of the sending process to the system address space, and from there to the receiving process' address space.
58: 44: 85:(UMDF), whose user-mode parts require an efficient communication channel with UMDF's components in the 82: 81:) in order to provide a high-speed scalable communication mechanism required to efficiently implement 54: 215: 158:- used by the server to communicate with a particular client; one such port per client is created 186:
ALPC has a performance advantage over the former LPC interface, as it can be configured to use
252: 167:(A)LPC supports the following three modes of message exchange between the server and client: 8: 121: 117: 62: 179:(A)LPC) to the receiving process pointing to the sent data in the shared memory section. 93: 369: 344: 247: 223: 128:
The typical communication scenario between the server and the client is as follows:
357: 392: 365: 211: 280: 139:
A client requests a connection to that named port by sending a connect message.
395: (archived June 12, 2008) — Includes explanation of undocumented functions 407: 172: 116:(A)LPC is implemented using kernel "port" objects, which are securable (with 101: 66: 340: 104:
API to communicate locally, i.e. between the processes on the same machine
398: 51: 48: 218:
all use (A)LPC ports directly to communicate with client processes.
107:
by calling Windows APIs that are implemented with (A)LPC (see below)
219: 152:- used by client threads to communicate with a particular server 238:
in many cases uses (A)LPC for local communication as well.
92:
The (A)LPC interface is part of Windows NT's undocumented
356: 318: 306: 294: 335:
Dabak, Prasad; Borate, Milind; Phadke, Sandeep (1999),
334: 276:"LPC (Local procedure calls) Part 1 architecture" 405: 226:use it to communicate with the LSASS process. 71:Asynchronous Local Inter-Process Communication 270: 268: 265: 208:Local Security Authority Subsystem Service 142:If the server accepts the connection, two 136:object, and waits for clients to connect. 360:; Solomon, David; Ionescu, Alex (2009), 319:Russinovich, Solomon & Ionescu (2009 307:Russinovich, Solomon & Ionescu (2009 295:Russinovich, Solomon & Ionescu (2009 14: 406: 24: 414:Windows communication and services 25: 430: 382: 132:A server process first creates a 111: 29:Local Inter-Process Communication 43:) is an internal, undocumented 312: 300: 288: 194: 120:, allowing e.g. only specific 13: 1: 328: 79:Advanced Local Procedure Call 134:named server connection port 69:, LPC has been rewritten as 65:on the same computer. As of 35:, often also referred to as 7: 419:Inter-process communication 241: 45:inter-process communication 10: 435: 224:Security Reference Monitor 83:User-Mode Driver Framework 41:Lightweight Procedure Call 156:server communication port 150:client communication port 47:facility provided by the 258: 337:Undocumented Windows NT 216:Service Control Manager 253:Remote procedure call 389:Local Procedure Call 188:I/O completion ports 37:Local Procedure Call 18:Local Procedure Call 146:ports are created: 362:Windows® Internals 399:LPC Communication 375:978-0-7356-2530-3 358:Russinovich, Mark 16:(Redirected from 426: 378: 364:(5th ed.), 353: 322: 316: 310: 304: 298: 292: 286: 285: 272: 57:for lightweight 21: 434: 433: 429: 428: 427: 425: 424: 423: 404: 403: 393:Wayback Machine 385: 376: 366:Microsoft Press 351: 331: 326: 325: 317: 313: 305: 301: 293: 289: 274: 273: 266: 261: 244: 212:Session Manager 197: 114: 100:when using the 23: 22: 15: 12: 11: 5: 432: 422: 421: 416: 402: 401: 396: 384: 383:External links 381: 380: 379: 374: 354: 349: 330: 327: 324: 323: 311: 299: 287: 281:Microsoft Docs 263: 262: 260: 257: 256: 255: 250: 243: 240: 196: 193: 184: 183: 180: 176: 165: 164: 161: 160: 159: 153: 140: 137: 113: 112:Implementation 110: 109: 108: 105: 9: 6: 4: 3: 2: 431: 420: 417: 415: 412: 411: 409: 400: 397: 394: 390: 387: 386: 377: 371: 367: 363: 359: 355: 352: 350:0-7645-4569-8 346: 342: 338: 333: 332: 320: 315: 308: 303: 296: 291: 283: 282: 277: 271: 269: 264: 254: 251: 249: 246: 245: 239: 237: 233: 227: 225: 221: 217: 213: 209: 204: 202: 192: 189: 181: 177: 174: 173:address space 170: 169: 168: 162: 157: 154: 151: 148: 147: 145: 141: 138: 135: 131: 130: 129: 126: 123: 119: 106: 103: 102:Microsoft RPC 99: 98: 97: 95: 90: 88: 84: 80: 77:, often also 76: 72: 68: 67:Windows Vista 64: 60: 56: 53: 50: 46: 42: 38: 34: 30: 19: 361: 341:Hungry Minds 336: 314: 302: 290: 279: 228: 214:(SMSS), and 205: 198: 185: 166: 155: 149: 143: 133: 127: 115: 91: 78: 74: 70: 40: 36: 32: 28: 26: 195:Known usage 408:Categories 329:References 94:Native API 52:Windows NT 210:(LSASS), 87:executive 63:processes 49:Microsoft 242:See also 222:and the 220:Winlogon 61:between 391:at the 144:unnamed 372:  347:  55:kernel 321::204) 309::203) 297::201) 259:Notes 248:Doors 201:CSRSS 370:ISBN 345:ISBN 236:DCOM 234:and 206:The 122:SIDs 118:ACLs 75:ALPC 27:The 232:OLE 59:IPC 39:or 33:LPC 410:: 368:, 343:, 339:, 278:. 267:^ 89:. 284:. 73:( 31:( 20:)

Index

Local Procedure Call
inter-process communication
Microsoft
Windows NT
kernel
IPC
processes
Windows Vista
User-Mode Driver Framework
executive
Native API
Microsoft RPC
ACLs
SIDs
address space
I/O completion ports
CSRSS
Local Security Authority Subsystem Service
Session Manager
Service Control Manager
Winlogon
Security Reference Monitor
OLE
DCOM
Doors
Remote procedure call


"LPC (Local procedure calls) Part 1 architecture"
Microsoft Docs

Text is available under the Creative Commons Attribution-ShareAlike License. Additional terms may apply.