Example #1
0
NTSTATUS
RtlCliSetCurrentDirectory(PCHAR Directory)
{
  WCHAR buf[MAX_PATH];
  UNICODE_STRING us;

  if (NULL == Directory) 
  {
    return STATUS_UNSUCCESSFUL;
  }

  // Full path contains at least two symbols, the second is ':'
  if (strnlen(Directory, MAX_PATH) >= 2 && Directory[1] == ':') 
  {
    RtlCreateUnicodeStringFromAsciiz(&us, Directory);
    RtlSetCurrentDirectory_U(&us);
    RtlFreeUnicodeString(&us);
    return STATUS_SUCCESS;
  }

  GetFullPath(Directory, buf, TRUE);
  RtlInitUnicodeString(&us, buf);
  RtlSetCurrentDirectory_U(&us);
  RtlFreeUnicodeString(&us);

  return STATUS_SUCCESS;
}
Example #2
0
/*
 * @implemented
 */
BOOL
WINAPI
SetCurrentDirectoryW (
	LPCWSTR	lpPathName
	)
{
	UNICODE_STRING UnicodeString;
	NTSTATUS Status;

	RtlInitUnicodeString (&UnicodeString,
	                      lpPathName);

	Status = RtlSetCurrentDirectory_U (&UnicodeString);
	if (!NT_SUCCESS(Status))
	{
		BaseSetLastNTError (Status);
		return FALSE;
	}

	return TRUE;
}