Fixed some bugs in CreateProcessA which was introduced by r16730.
[reactos.git] / reactos / lib / kernel32 / include / kernel32.h
index c659c87..87817b0 100755 (executable)
 #define FIELD_OFFSET(type,fld) ((LONG)&(((type *)0)->fld))
 #endif
 
+#define IsConsoleHandle(h) \
+  (((((ULONG)h) & 0x10000003) == 0x3) ? TRUE : FALSE)
+
+#define HANDLE_DETACHED_PROCESS    (HANDLE)-1
+#define HANDLE_CREATE_NEW_CONSOLE  (HANDLE)-2
+#define HANDLE_CREATE_NO_WINDOW    (HANDLE)-3
+
+/* Undocumented CreateProcess flag */
+#define STARTF_SHELLPRIVATE         0x400
+  
 #define SetLastErrorByStatus(__S__) \
  ((void)SetLastError(RtlNtStatusToDosError(__S__)))
 
-typedef 
+typedef
 DWORD
 (*WaitForInputIdleType)(
     HANDLE hProcess,
@@ -47,8 +57,6 @@ extern LPTOP_LEVEL_EXCEPTION_FILTER GlobalTopLevelExceptionFilter;
 
 /* FUNCTION PROTOTYPES *******************************************************/
 
-BOOL STDCALL IsConsoleHandle(HANDLE Handle);
-
 BOOL STDCALL VerifyConsoleIoHandle(HANDLE Handle);
 
 BOOL STDCALL CloseConsoleHandle(HANDLE Handle);
@@ -60,15 +68,99 @@ HANDLE STDCALL OpenConsoleW (LPWSTR wsName,
 
 PTEB GetTeb(VOID);
 
-
 PWCHAR FilenameA2W(LPCSTR NameA, BOOL alloc);
-   
+
 DWORD FilenameW2A_FitOrFail(LPSTR  DestA, INT destLen, LPCWSTR SourceW, INT sourceLen);
 DWORD FilenameU2A_FitOrFail(LPSTR  DestA, INT destLen, PUNICODE_STRING SourceU);
 
-
-
-
+#define HeapAlloc RtlAllocateHeap
+#define HeapFree RtlFreeHeap
+
+POBJECT_ATTRIBUTES
+STDCALL
+BasepConvertObjectAttributes(OUT POBJECT_ATTRIBUTES ObjectAttributes,
+                             IN PSECURITY_ATTRIBUTES SecurityAttributes OPTIONAL,
+                             IN PUNICODE_STRING ObjectName);
+                             
+NTSTATUS
+STDCALL
+BasepCreateStack(HANDLE hProcess,
+                 ULONG StackReserve,
+                 ULONG StackCommit,
+                 PINITIAL_TEB InitialTeb);
+                 
+VOID
+STDCALL
+BasepInitializeContext(IN PCONTEXT Context,
+                       IN PVOID Parameter,
+                       IN PVOID StartAddress,
+                       IN PVOID StackAddress,
+                       IN ULONG ContextType);
+                
+VOID
+STDCALL
+BaseThreadStartupThunk();
+
+VOID
+STDCALL
+BaseProcessStartThunk();
+        
+__declspec(noreturn)
+VOID
+STDCALL
+BaseThreadStartup(LPTHREAD_START_ROUTINE lpStartAddress,
+                  LPVOID lpParameter);
+                  
+VOID
+STDCALL
+BasepFreeStack(HANDLE hProcess,
+               PINITIAL_TEB InitialTeb);
+
+__declspec(noreturn)
+VOID
+WINAPI
+BaseFiberStartup(VOID);
+
+typedef UINT (STDCALL *PPROCESS_START_ROUTINE)(VOID);
+
+VOID
+STDCALL
+BaseProcessStartup(PPROCESS_START_ROUTINE lpStartAddress);
+                  
+BOOLEAN
+STDCALL
+BasepCheckRealTimePrivilege(VOID);
+
+VOID
+STDCALL
+BasepAnsiStringToHeapUnicodeString(IN LPCSTR AnsiString,
+                                   OUT LPWSTR* UnicodeString);
+                                   
+PUNICODE_STRING
+STDCALL
+Basep8BitStringToCachedUnicodeString(IN LPCSTR String);
+
+NTSTATUS
+STDCALL
+Basep8BitStringToLiveUnicodeString(OUT PUNICODE_STRING UnicodeString,
+                                   IN LPCSTR String);
+
+NTSTATUS
+STDCALL
+Basep8BitStringToHeapUnicodeString(OUT PUNICODE_STRING UnicodeString,
+                                   IN LPCSTR String);
+
+typedef NTSTATUS (STDCALL *PRTL_CONVERT_STRING)(IN PUNICODE_STRING UnicodeString,
+                                                IN PANSI_STRING AnsiString,
+                                                IN BOOLEAN AllocateMemory);
+                                                
+extern PRTL_CONVERT_STRING Basep8BitStringToUnicodeString;
+
+NTSTATUS
+STDCALL
+BasepMapFile(IN LPCWSTR lpApplicationName,
+             OUT PHANDLE hSection,
+             IN PUNICODE_STRING ApplicationName);
 
 #endif /* ndef _KERNEL32_INCLUDE_KERNEL32_H */