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 (
413:
207:
373:
418:
275:
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.
235:
388:
348:
200:
96:, and as such is not available to applications for direct use. However, it can be used indirectly in the following instances:
231:
187:
58:
44:
86:
82:
54:
215:
171:
For short messages (fewer than 256 bytes) the kernel copies the message buffers between processes, from the
175:
of the sending process to the system address space, and from there to the receiving process' address space.
252:
85:(UMDF), whose user-mode parts require an efficient communication channel with UMDF's components in the
81:) in order to provide a high-speed scalable communication mechanism required to efficiently implement
121:
117:
62:
158:- used by the server to communicate with a particular client; one such port per client is created
93:
186:
ALPC has a performance advantage over the former LPC interface, as it can be configured to use
369:
344:
247:
223:
167:(A)LPC supports the following three modes of message exchange between the server and client:
357:
392:
365:
211:
17:
179:(A)LPC) to the receiving process pointing to the sent data in the shared memory section.
280:
407:
172:
101:
66:
128:
The typical communication scenario between the server and the client is as follows:
340:
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
51:
116:(A)LPC is implemented using kernel "port" objects, which are securable (with
48:
104:
API to communicate locally, i.e. between the processes on the same machine
398:
219:
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)
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
318:
306:
294:
335:
Dabak, Prasad; Borate, Milind; Phadke, Sandeep (1999),
276:"LPC (Local procedure calls) Part 1 architecture"
226:use it to communicate with the LSASS process.
71:Asynchronous Local Inter-Process Communication
270:
268:
8:
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
264:
7:
414:Windows communication and services
25:
132:A server process first creates a
29:Local Inter-Process Communication
43:) is an internal, undocumented
120:, allowing e.g. only specific
1:
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
419:Inter-process communication
45:inter-process communication
435:
224:Security Reference Monitor
83:User-Mode Driver Framework
41:Lightweight Procedure Call
18:Lightweight Procedure Call
156:server communication port
150:client communication port
47:facility provided by the
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
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
356:
351:
334:
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:
430:
422:
421:
416:
406:
405:
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:
24:
14:
13:
10:
9:
6:
4:
3:
2:
431:
420:
417:
415:
412:
411:
409:
400:
397:
394:
390:
387:
386:
382:
377:
371:
367:
363:
359:
355:
352:
350:0-7645-4569-8
346:
342:
338:
333:
332:
328:
320:
315:
312:
308:
303:
300:
296:
291:
288:
283:
282:
277:
271:
269:
265:
258:
254:
251:
249:
246:
245:
241:
239:
237:
233:
227:
225:
221:
217:
213:
209:
204:
202:
194:
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:
111:
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:)
Text is available under the Creative Commons Attribution-ShareAlike License. Additional terms may apply.