18#define NORMALIZE(x,addr) {if(x) x=(PVOID)((ULONG_PTR)(x)+(ULONG_PTR)(addr));}
19#define DENORMALIZE(x,addr) {if(x) x=(PVOID)((ULONG_PTR)(x)-(ULONG_PTR)(addr));}
20#define ALIGN(x,align) (((ULONG)(x)+(align)-1UL)&(~((align)-1UL)))
62 SIZE_T EnvironmentSize = 0;
67 HANDLE CurrentDirectoryHandle;
71 DPRINT (
"RtlCreateProcessParameters\n");
83 CurrentDirectoryHandle =
NtCurrentPeb()->ProcessParameters->CurrentDirectory.Handle;
84 ConsoleHandle =
NtCurrentPeb()->ProcessParameters->ConsoleHandle;
85 ConsoleFlags =
NtCurrentPeb()->ProcessParameters->ConsoleFlags;
93 CurrentDirectoryHandle =
NULL;
98 if (CommandLine ==
NULL)
99 CommandLine = ImagePathName;
100 if (CommandLine ==
NULL)
101 CommandLine = &EmptyString;
102 if (WindowTitle ==
NULL)
103 WindowTitle = &EmptyString;
104 if (DesktopInfo ==
NULL)
105 DesktopInfo = &EmptyString;
106 if (ShellInfo ==
NULL)
107 ShellInfo = &EmptyString;
108 if (RuntimeData ==
NULL)
109 RuntimeData = &NullString;
131 EnvEnd +=
wcslen(EnvEnd) + 1;
145 DPRINT (
"Process parameters allocated\n");
233 *ProcessParameters = Param;
246 RtlFreeHeap(RtlGetProcessHeap(), 0, ProcessParameters);
269 Params->Flags &= ~RTL_USER_PROCESS_PARAMETERS_NORMALIZED;
WCHAR CurrentDirectory[1024]
PVOID NTAPI RtlAllocateHeap(IN PVOID HeapHandle, IN ULONG Flags, IN SIZE_T Size)
BOOLEAN NTAPI RtlFreeHeap(IN PVOID HeapHandle, IN ULONG Flags, IN PVOID HeapBase)
struct _RTL_USER_PROCESS_PARAMETERS RTL_USER_PROCESS_PARAMETERS
KPROCESSOR_MODE NTAPI RtlpGetMode(VOID)
_ACRTIMP size_t __cdecl wcslen(const wchar_t *)
IN PFCB IN PFILE_OBJECT FileObject IN ULONG AllocationSize
_Must_inspect_result_ _In_ PFSRTL_PER_STREAM_CONTEXT Ptr
#define memmove(s1, s2, n)
PVOID PVOID PWCHAR PVOID Environment
static const char const char * DllPath
_In_ UINT _In_ UINT _In_ PNDIS_PACKET Source
_In_ PUNICODE_STRING _Inout_ PUNICODE_STRING Destination
#define RTL_USER_PROCESS_PARAMETERS_NORMALIZED
_In_ ULONG _In_ ULONG _In_ ULONG Length
static __inline VOID RtlpCopyParameterString(PWCHAR *Ptr, PUNICODE_STRING Destination, PUNICODE_STRING Source, USHORT Size)
#define DENORMALIZE(x, addr)
#define NORMALIZE(x, addr)
PRTL_USER_PROCESS_PARAMETERS NTAPI RtlDeNormalizeProcessParams(PRTL_USER_PROCESS_PARAMETERS Params)
PRTL_USER_PROCESS_PARAMETERS NTAPI RtlNormalizeProcessParams(PRTL_USER_PROCESS_PARAMETERS Params)
NTSTATUS NTAPI RtlDestroyProcessParameters(IN PRTL_USER_PROCESS_PARAMETERS ProcessParameters)
NTSTATUS NTAPI RtlCreateProcessParameters(PRTL_USER_PROCESS_PARAMETERS *ProcessParameters, PUNICODE_STRING ImagePathName, PUNICODE_STRING DllPath, PUNICODE_STRING CurrentDirectory, PUNICODE_STRING CommandLine, PWSTR Environment, PUNICODE_STRING WindowTitle, PUNICODE_STRING DesktopInfo, PUNICODE_STRING ShellInfo, PUNICODE_STRING RuntimeData)
UNICODE_STRING RuntimeData
UNICODE_STRING CommandLine
UNICODE_STRING ImagePathName
UNICODE_STRING WindowTitle
UNICODE_STRING DesktopInfo
#define RtlCopyMemory(Destination, Source, Length)
#define STATUS_INSUFFICIENT_RESOURCES
#define ALIGN_UP_POINTER_BY(ptr, align)
_Must_inspect_result_ _In_ WDFDEVICE _In_ PWDF_DEVICE_PROPERTY_DATA _In_ DEVPROPTYPE _In_ ULONG Size
_In_ WDFIOTARGET _In_ PWDF_REQUEST_COMPLETION_PARAMS Params
NTSYSAPI void WINAPI RtlReleasePebLock(void)
NTSYSAPI void WINAPI RtlAcquirePebLock(void)