ReactOS Fundraising Campaign 2012
 
€ 4,410 / € 30,000

Information | Donate

Home | Info | Community | Development | myReactOS | Contact Us

  1. Home
  2. Community
  3. Development
  4. myReactOS
  5. Fundraiser 2012

  1. Main Page
  2. Alphabetical List
  3. Data Structures
  4. Directories
  5. File List
  6. Data Fields
  7. Globals
  8. Related Pages

ReactOS Development > Doxygen

lpc.h
Go to the documentation of this file.
00001 /*
00002 * PROJECT:         ReactOS Kernel
00003 * LICENSE:         GPL - See COPYING in the top level directory
00004 * FILE:            ntoskrnl/include/internal/lpc.h
00005 * PURPOSE:         Internal header for the Local Procedure Call
00006 * PROGRAMMERS:     Alex Ionescu (alex.ionescu@reactos.org)
00007 */
00008 
00009 //
00010 // Define this if you want debugging support
00011 //
00012 #define _LPC_DEBUG_                                         0x00
00013 
00014 //
00015 // These define the Debug Masks Supported
00016 //
00017 #define LPC_CREATE_DEBUG                                    0x01
00018 #define LPC_CLOSE_DEBUG                                     0x02
00019 #define LPC_CONNECT_DEBUG                                   0x04
00020 #define LPC_LISTEN_DEBUG                                    0x08
00021 #define LPC_REPLY_DEBUG                                     0x10
00022 #define LPC_COMPLETE_DEBUG                                  0x20
00023 #define LPC_SEND_DEBUG                                      0x40
00024 
00025 //
00026 // Debug/Tracing support
00027 //
00028 #if _LPC_DEBUG_
00029 #ifdef NEW_DEBUG_SYSTEM_IMPLEMENTED // enable when Debug Filters are implemented
00030 #define LPCTRACE(x, ...)                                    \
00031     {                                                       \
00032         DbgPrintEx("%s [%.16s] - ",                         \
00033                    __FUNCTION__,                            \
00034                    PsGetCurrentProcess()->ImageFileName);   \
00035         DbgPrintEx(__VA_ARGS__);                            \
00036     }
00037 #else
00038 #define LPCTRACE(x, ...)                                    \
00039     if (x & LpcpTraceLevel)                                 \
00040     {                                                       \
00041         DbgPrint("%s [%.16s:%lx] - ",                       \
00042                  __FUNCTION__,                              \
00043                  PsGetCurrentProcess()->ImageFileName,      \
00044                  PsGetCurrentThreadId());                   \
00045         DbgPrint(__VA_ARGS__);                              \
00046     }
00047 #endif
00048 #else
00049 #define LPCTRACE(x, fmt, ...) DPRINT(fmt, ##__VA_ARGS__)
00050 #endif
00051 
00052 //
00053 // LPC Port/Message Flags
00054 //
00055 #define LPCP_THREAD_FLAG_IS_PORT                            1
00056 #define LPCP_THREAD_FLAG_NO_IMPERSONATION                   2
00057 #define LPCP_THREAD_FLAGS                                   (LPCP_THREAD_FLAG_IS_PORT | \
00058                                                              LPCP_THREAD_FLAG_NO_IMPERSONATION)
00059 
00060 //
00061 // Internal Port Management
00062 //
00063 VOID
00064 NTAPI
00065 LpcpClosePort(
00066     IN PEPROCESS Process OPTIONAL,
00067     IN PVOID Object,
00068     IN ACCESS_MASK GrantedAccess,
00069     IN ULONG ProcessHandleCount,
00070     IN ULONG SystemHandleCount
00071 );
00072 
00073 VOID
00074 NTAPI
00075 LpcpDeletePort(
00076     IN PVOID ObjectBody
00077 );
00078 
00079 NTSTATUS
00080 NTAPI
00081 LpcpInitializePortQueue(
00082     IN PLPCP_PORT_OBJECT Port
00083 );
00084 
00085 VOID
00086 NTAPI
00087 LpcpFreeToPortZone(
00088     IN PLPCP_MESSAGE Message,
00089     IN ULONG Flags
00090 );
00091 
00092 VOID
00093 NTAPI
00094 LpcpMoveMessage(
00095     IN PPORT_MESSAGE Destination,
00096     IN PPORT_MESSAGE Origin,
00097     IN PVOID Data,
00098     IN ULONG MessageType,
00099     IN PCLIENT_ID ClientId
00100 );
00101 
00102 VOID
00103 NTAPI
00104 LpcpSaveDataInfoMessage(
00105     IN PLPCP_PORT_OBJECT Port,
00106     IN PLPCP_MESSAGE Message,
00107     IN ULONG LockHeld
00108 );
00109 
00110 //
00111 // Module-external utlity functions
00112 //
00113 VOID
00114 NTAPI
00115 LpcExitThread(
00116     IN PETHREAD Thread
00117 );
00118 
00119 //
00120 // Initialization functions
00121 //
00122 BOOLEAN
00123 NTAPI
00124 LpcInitSystem(
00125     VOID
00126 );
00127 
00128 //
00129 // Global data inside the Process Manager
00130 //
00131 extern POBJECT_TYPE LpcPortObjectType;
00132 extern ULONG LpcpNextMessageId, LpcpNextCallbackId;
00133 extern KGUARDED_MUTEX LpcpLock;
00134 extern PAGED_LOOKASIDE_LIST LpcpMessagesLookaside;
00135 extern ULONG LpcpMaxMessageSize;
00136 extern ULONG LpcpTraceLevel;
00137 
00138 //
00139 // Inlined Functions
00140 //
00141 #include "lpc_x.h"

Generated on Sat May 26 2012 04:36:07 for ReactOS by doxygen 1.7.6.1

ReactOS is a registered trademark or a trademark of ReactOS Foundation in the United States and other countries.