/* INCLUDES ****************************************************************/
#include <k32.h>
+#ifdef _M_IX86
#include "i386/ketypes.h"
+#endif
#define NDEBUG
-#include "../include/debug.h"
+#include <debug.h>
/* GLOBALS ******************************************************************/
* Converts an ANSI or OEM String to the specified Unicode String
*/
NTSTATUS
-STDCALL
+WINAPI
Basep8BitStringToLiveUnicodeString(OUT PUNICODE_STRING UnicodeString,
IN LPCSTR String)
{
* Converts an ANSI or OEM String to the TEB StaticUnicodeString
*/
PUNICODE_STRING
-STDCALL
+WINAPI
Basep8BitStringToCachedUnicodeString(IN LPCSTR String)
{
PUNICODE_STRING StaticString = &NtCurrentTeb()->StaticUnicodeString;
}
NTSTATUS
-STDCALL
+WINAPI
Basep8BitStringToHeapUnicodeString(OUT PUNICODE_STRING UnicodeString,
IN LPCSTR String)
{
* Allocates space from the Heap and converts an Ansi String into it
*/
VOID
-STDCALL
+WINAPI
BasepAnsiStringToHeapUnicodeString(IN LPCSTR AnsiString,
OUT LPWSTR* UnicodeString)
{
* Converts lpSecurityAttributes + Object Name into ObjectAttributes.
*/
POBJECT_ATTRIBUTES
-STDCALL
+WINAPI
BasepConvertObjectAttributes(OUT POBJECT_ATTRIBUTES ObjectAttributes,
IN PSECURITY_ATTRIBUTES SecurityAttributes OPTIONAL,
IN PUNICODE_STRING ObjectName)
* Creates a stack for a thread or fiber
*/
NTSTATUS
-STDCALL
+WINAPI
BasepCreateStack(HANDLE hProcess,
ULONG StackReserve,
ULONG StackCommit,
/* 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;
}
VOID
-STDCALL
+WINAPI
BasepFreeStack(HANDLE hProcess,
PINITIAL_TEB InitialTeb)
{
* 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 */
/* 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;
* Maps an image file into a section
*/
NTSTATUS
-STDCALL
+WINAPI
BasepMapFile(IN LPCWSTR lpApplicationName,
OUT PHANDLE hSection,
IN PUNICODE_STRING ApplicationName)
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);
if (!NT_SUCCESS(Status))
{
DPRINT1("Failed to open file\n");
- SetLastErrorByStatus (Status);
+ SetLastErrorByStatus(Status);
return Status;
}