[kernel32]
[reactos.git] / reactos / dll / win32 / kernel32 / misc / utils.c
index 119f077..cebd500 100644 (file)
@@ -9,10 +9,12 @@
 /* INCLUDES ****************************************************************/
 
 #include <k32.h>
+#ifdef _M_IX86
 #include "i386/ketypes.h"
+#endif
 
 #define NDEBUG
-#include "../include/debug.h"
+#include <debug.h>
 
 /* GLOBALS ******************************************************************/
 
@@ -24,7 +26,7 @@ PRTL_CONVERT_STRING Basep8BitStringToUnicodeString;
  * Converts an ANSI or OEM String to the specified Unicode String
  */
 NTSTATUS
-STDCALL
+WINAPI
 Basep8BitStringToLiveUnicodeString(OUT PUNICODE_STRING UnicodeString,
                                    IN LPCSTR String)
 {
@@ -52,7 +54,7 @@ Basep8BitStringToLiveUnicodeString(OUT PUNICODE_STRING UnicodeString,
  * Converts an ANSI or OEM String to the TEB StaticUnicodeString
  */
 PUNICODE_STRING
-STDCALL
+WINAPI
 Basep8BitStringToCachedUnicodeString(IN LPCSTR String)
 {
     PUNICODE_STRING StaticString = &NtCurrentTeb()->StaticUnicodeString;
@@ -79,7 +81,7 @@ Basep8BitStringToCachedUnicodeString(IN LPCSTR String)
 }
 
 NTSTATUS
-STDCALL
+WINAPI
 Basep8BitStringToHeapUnicodeString(OUT PUNICODE_STRING UnicodeString,
                                    IN LPCSTR String)
 {
@@ -107,7 +109,7 @@ Basep8BitStringToHeapUnicodeString(OUT PUNICODE_STRING UnicodeString,
  * Allocates space from the Heap and converts an Ansi String into it
  */
 VOID
-STDCALL
+WINAPI
 BasepAnsiStringToHeapUnicodeString(IN LPCSTR AnsiString,
                                    OUT LPWSTR* UnicodeString)
 {
@@ -135,7 +137,7 @@ BasepAnsiStringToHeapUnicodeString(IN LPCSTR AnsiString,
  * Converts lpSecurityAttributes + Object Name into ObjectAttributes.
  */
 POBJECT_ATTRIBUTES
-STDCALL
+WINAPI
 BasepConvertObjectAttributes(OUT POBJECT_ATTRIBUTES ObjectAttributes,
                              IN PSECURITY_ATTRIBUTES SecurityAttributes OPTIONAL,
                              IN PUNICODE_STRING ObjectName)
@@ -185,7 +187,7 @@ BasepConvertObjectAttributes(OUT POBJECT_ATTRIBUTES ObjectAttributes,
  * Creates a stack for a thread or fiber
  */
 NTSTATUS
-STDCALL
+WINAPI
 BasepCreateStack(HANDLE hProcess,
                  ULONG StackReserve,
                  ULONG StackCommit,
@@ -255,6 +257,8 @@ BasepCreateStack(HANDLE hProcess,
     /* Now set up some basic Initial TEB Parameters */
     InitialTeb->AllocatedStackBase = (PVOID)Stack;
     InitialTeb->StackBase = (PVOID)(Stack + StackReserve);
+    InitialTeb->PreviousStackBase = NULL;
+    InitialTeb->PreviousStackLimit = NULL;
     
     /* Update the Stack Position */
     Stack += StackReserve - StackCommit;
@@ -310,7 +314,7 @@ BasepCreateStack(HANDLE hProcess,
 }
 
 VOID
-STDCALL
+WINAPI
 BasepFreeStack(HANDLE hProcess,
                PINITIAL_TEB InitialTeb)
 {
@@ -327,13 +331,14 @@ BasepFreeStack(HANDLE hProcess,
  * Creates the Initial Context for a Thread or Fiber
  */
 VOID
-STDCALL
+WINAPI
 BasepInitializeContext(IN PCONTEXT Context,
                        IN PVOID Parameter,
                        IN PVOID StartAddress,
                        IN PVOID StackAddress,
                        IN ULONG ContextType)
 {
+#ifdef _M_IX86
     DPRINT("BasepInitializeContext: %p\n", Context);
     
     /* Setup the Initial Win32 Thread Context */
@@ -371,13 +376,18 @@ BasepInitializeContext(IN PCONTEXT Context,
     
     /* Give it some room for the Parameter */
     Context->Esp -= sizeof(PVOID);
+#else
+#warning Unknown architecture
+    UNIMPLEMENTED;
+    DbgBreakPoint();
+#endif
 }
 
 /*
  * Checks if the privilege for Real-Time Priority is there
  */
 BOOLEAN
-STDCALL
+WINAPI
 BasepCheckRealTimePrivilege(VOID)
 {
     return TRUE;
@@ -387,7 +397,7 @@ BasepCheckRealTimePrivilege(VOID)
  * Maps an image file into a section
  */
 NTSTATUS
-STDCALL
+WINAPI
 BasepMapFile(IN LPCWSTR lpApplicationName,
              OUT PHANDLE hSection,
              IN PUNICODE_STRING ApplicationName)
@@ -404,10 +414,14 @@ BasepMapFile(IN LPCWSTR lpApplicationName,
     RelativeName.Handle = NULL;
 
     /* Find the application name */
-    RtlDosPathNameToNtPathName_U(lpApplicationName,
-                                 ApplicationName,
-                                 NULL,
-                                 &RelativeName);
+    if (!RtlDosPathNameToNtPathName_U(lpApplicationName,
+                                      ApplicationName,
+                                      NULL,
+                                      &RelativeName))
+    {
+        return STATUS_OBJECT_PATH_NOT_FOUND;
+    }
+
     DPRINT("ApplicationName %wZ\n", ApplicationName);
     DPRINT("RelativeName %wZ\n", &RelativeName.DosPath);
     
@@ -434,7 +448,7 @@ BasepMapFile(IN LPCWSTR lpApplicationName,
     if (!NT_SUCCESS(Status))
     {
         DPRINT1("Failed to open file\n");
-        SetLastErrorByStatus (Status);
+        SetLastErrorByStatus(Status);
         return Status;
     }