mirror of
https://github.com/reactos/reactos.git
synced 2024-12-28 10:04:49 +00:00
implemented SetFileShortName()
svn path=/trunk/; revision=8783
This commit is contained in:
parent
27f458a084
commit
177645b96c
2 changed files with 93 additions and 31 deletions
|
@ -1,4 +1,4 @@
|
||||||
/* $Id: file.c,v 1.52 2004/03/18 16:19:25 weiden Exp $
|
/* $Id: file.c,v 1.53 2004/03/18 18:29:18 weiden Exp $
|
||||||
*
|
*
|
||||||
* COPYRIGHT: See COPYING in the top level directory
|
* COPYRIGHT: See COPYING in the top level directory
|
||||||
* PROJECT: ReactOS system libraries
|
* PROJECT: ReactOS system libraries
|
||||||
|
@ -1192,4 +1192,94 @@ SetFileValidData(
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* @implemented
|
||||||
|
*/
|
||||||
|
BOOL
|
||||||
|
STDCALL
|
||||||
|
SetFileShortNameW(
|
||||||
|
HANDLE hFile,
|
||||||
|
LPCWSTR lpShortName)
|
||||||
|
{
|
||||||
|
NTSTATUS Status;
|
||||||
|
ULONG NeededSize;
|
||||||
|
UNICODE_STRING ShortName;
|
||||||
|
IO_STATUS_BLOCK IoStatusBlock;
|
||||||
|
PFILE_NAME_INFORMATION FileNameInformation;
|
||||||
|
|
||||||
|
if(!lpShortName)
|
||||||
|
{
|
||||||
|
SetLastError(ERROR_INVALID_PARAMETER);
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
RtlInitUnicodeString(&ShortName, lpShortName);
|
||||||
|
|
||||||
|
NeededSize = sizeof(FILE_NAME_INFORMATION) + ShortName.Length + sizeof(WCHAR);
|
||||||
|
if(!(FileNameInformation = RtlAllocateHeap(RtlGetProcessHeap(), HEAP_ZERO_MEMORY, NeededSize)))
|
||||||
|
{
|
||||||
|
SetLastError(ERROR_NOT_ENOUGH_MEMORY);
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
FileNameInformation->FileNameLength = ShortName.Length;
|
||||||
|
RtlCopyMemory(FileNameInformation->FileName, ShortName.Buffer, ShortName.Length);
|
||||||
|
|
||||||
|
Status = NtSetInformationFile(hFile,
|
||||||
|
&IoStatusBlock, //out
|
||||||
|
FileNameInformation,
|
||||||
|
NeededSize,
|
||||||
|
FileShortNameInformation);
|
||||||
|
|
||||||
|
RtlFreeHeap(RtlGetProcessHeap(), 0, FileNameInformation);
|
||||||
|
if(!NT_SUCCESS(Status))
|
||||||
|
{
|
||||||
|
|
||||||
|
SetLastErrorByStatus(Status);
|
||||||
|
}
|
||||||
|
|
||||||
|
return NT_SUCCESS(Status);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* @implemented
|
||||||
|
*/
|
||||||
|
BOOL
|
||||||
|
STDCALL
|
||||||
|
SetFileShortNameA(
|
||||||
|
HANDLE hFile,
|
||||||
|
LPCSTR lpShortName
|
||||||
|
)
|
||||||
|
{
|
||||||
|
NTSTATUS Status;
|
||||||
|
BOOL Ret;
|
||||||
|
ANSI_STRING ShortNameA;
|
||||||
|
UNICODE_STRING ShortName;
|
||||||
|
|
||||||
|
if(!lpShortName)
|
||||||
|
{
|
||||||
|
SetLastError(ERROR_INVALID_PARAMETER);
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
RtlInitAnsiString(&ShortNameA, (LPSTR)lpShortName);
|
||||||
|
|
||||||
|
if(bIsFileApiAnsi)
|
||||||
|
Status = RtlAnsiStringToUnicodeString(&ShortName, &ShortNameA, TRUE);
|
||||||
|
else
|
||||||
|
Status = RtlOemStringToUnicodeString(&ShortName, &ShortNameA, TRUE);
|
||||||
|
if(!NT_SUCCESS(Status))
|
||||||
|
{
|
||||||
|
SetLastErrorByStatus(Status);
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
Ret = SetFileShortNameW(hFile, ShortName.Buffer);
|
||||||
|
|
||||||
|
RtlFreeUnicodeString(&ShortName);
|
||||||
|
return Ret;
|
||||||
|
}
|
||||||
|
|
||||||
/* EOF */
|
/* EOF */
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
/* $Id: stubs.c,v 1.69 2004/03/18 16:19:26 weiden Exp $
|
/* $Id: stubs.c,v 1.70 2004/03/18 18:29:19 weiden Exp $
|
||||||
*
|
*
|
||||||
* KERNEL32.DLL stubs (unimplemented functions)
|
* KERNEL32.DLL stubs (unimplemented functions)
|
||||||
* Remove from this file, if you implement them.
|
* Remove from this file, if you implement them.
|
||||||
|
@ -1880,20 +1880,6 @@ SetDllDirectoryW(
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
* @unimplemented
|
|
||||||
*/
|
|
||||||
BOOL
|
|
||||||
STDCALL
|
|
||||||
SetFileShortNameW(
|
|
||||||
HANDLE hFile,
|
|
||||||
LPCWSTR lpShortName
|
|
||||||
)
|
|
||||||
{
|
|
||||||
SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* @unimplemented
|
* @unimplemented
|
||||||
*/
|
*/
|
||||||
|
@ -2254,20 +2240,6 @@ SetDllDirectoryA(
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
* @unimplemented
|
|
||||||
*/
|
|
||||||
BOOL
|
|
||||||
STDCALL
|
|
||||||
SetFileShortNameA(
|
|
||||||
HANDLE hFile,
|
|
||||||
LPCSTR lpShortName
|
|
||||||
)
|
|
||||||
{
|
|
||||||
SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* @unimplemented
|
* @unimplemented
|
||||||
*/
|
*/
|
||||||
|
|
Loading…
Reference in a new issue