ReactOS  r76032
reactos.cpp File Reference
#include "shellext.h"
#include <initguid.h>
#include <ntddstor.h>
#include <ndk/rtlfuncs.h>
Include dependency graph for reactos.cpp:

Go to the source code of this file.

Functions

 DEFINE_GUID (CLSID_WICImagingFactory, 0xcacaf262, 0x9370, 0x4615, 0xa1, 0x3b, 0x9f, 0x55, 0x39, 0xda, 0x4c, 0x0a)
 
NTSTATUS WINAPI RtlUTF8ToUnicodeN (PWSTR uni_dest, ULONG uni_bytes_max, PULONG uni_bytes_written, PCCH utf8_src, ULONG utf8_bytes)
 
DWORD BaseSetLastNTError (IN NTSTATUS Status)
 
BOOL WINAPI SetFileInformationByHandle (HANDLE hFile, FILE_INFO_BY_HANDLE_CLASS FileInformationClass, LPVOID lpFileInformation, DWORD dwBufferSize)
 

Variables

FILE_INFORMATION_CLASS ConvertToFileInfo [MaximumFileInfoByHandlesClass]
 

Function Documentation

DWORD BaseSetLastNTError ( IN NTSTATUS  Status)

Definition at line 166 of file reactos.cpp.

Referenced by ActivateActCtx(), AllocateUserPhysicalPages(), AssignProcessToJobObject(), BaseCreateVDMEnvironment(), Basep8BitStringToDynamicUnicodeString(), Basep8BitStringToStaticUnicodeString(), BasepCopyFileExW(), BasepCreateDefaultTimerQueue(), BasepDoTapeOperation(), BasepGetModuleHandleExParameterValidation(), BasepGetModuleHandleExW(), BasepGetVolumeNameForVolumeMountPoint(), BasepMapFile(), BasePushProcessParameters(), BaseUpdateVDMEntry(), Beep(), BindIoCompletionCallback(), BuildSubSysCommandLine(), CancelDeviceWakeupRequest(), CancelIo(), CancelTimerQueueTimer(), CancelWaitableTimer(), ChangeTimerQueueTimer(), CheckNameLegalDOS8Dot3A(), CheckRemoteDebuggerPresent(), CloseConsoleHandle(), CloseHandle(), ConnectConsole(), ConnectNamedPipe(), ContinueDebugEvent(), CreateConsoleScreenBuffer(), CreateDirectoryExW(), CreateDirectoryW(), CreateFiberEx(), CreateFileMappingW(), CreateFileW(), CreateHardLinkW(), CreateIoCompletionPort(), CreateJobSet(), CreateMailslotW(), CreateMemoryResourceNotification(), CreateNamedPipeW(), CreatePipe(), CreateProcessInternalW(), CreateRemoteThread(), CreateTimerQueue(), CreateTimerQueueTimer(), CreateToolhelp32Snapshot(), DeactivateActCtx(), DebugActiveProcess(), DebugBreakProcess(), DebugSetProcessKillOnExit(), DefineDosDeviceW(), DeleteFileW(), DeleteTimerQueueEx(), DeleteTimerQueueTimer(), DeviceIoControl(), DisableThreadLibraryCalls(), DisconnectNamedPipe(), DosDateTimeToFileTime(), DuplicateConsoleHandle(), DuplicateHandle(), ExpandEnvironmentStringsA(), ExpandEnvironmentStringsW(), FilenameA2W(), FileTimeToDosDateTime(), FindClose(), FindFirstChangeNotificationW(), FindFirstFileA(), FindFirstFileExA(), FindFirstFileExW(), FindFirstStreamW(), FindNextChangeNotification(), FindNextFileA(), FindNextFileW(), FlushConsoleInputBuffer(), FlushFileBuffers(), FlushInstructionCache(), FlushViewOfFile(), FreeConsole(), FreeLibrary(), FreeUserPhysicalPages(), GenerateConsoleCtrlEvent(), GetBinaryTypeA(), GetCompressedFileSizeW(), GetComputerNameFromRegistry(), GetConsoleCP(), GetConsoleCursorInfo(), GetConsoleDisplayMode(), GetConsoleFontInfo(), GetConsoleFontSize(), GetConsoleHandleInformation(), GetConsoleHardwareState(), GetConsoleMode(), GetConsoleOutputCP(), GetConsoleProcessList(), GetConsoleScreenBufferInfo(), GetConsoleSelectionInfo(), GetConsoleWindow(), GetCurrentActCtx(), GetCurrentConsoleFont(), GetCurrentDirectoryA(), GetDevicePowerState(), GetDiskFreeSpaceExW(), GetDiskFreeSpaceW(), GetDllDirectoryA(), GetEnvironmentStringsA(), GetEnvironmentStringsW(), GetEnvironmentVariableA(), GetEnvironmentVariableW(), GetExitCodeProcess(), GetExitCodeThread(), GetFileAttributesByHandle(), GetFileAttributesExW(), GetFileAttributesW(), GetFileInformationByHandle(), GetFileSize(), GetFileSizeEx(), GetFileTime(), GetFileType(), GetFullPathNameA(), GetHandleInformation(), GetLargestConsoleWindowSize(), GetLogicalDrives(), GetLogicalProcessorInformation(), GetLongPathNameA(), GetMailslotInfo(), GetModuleFileNameA(), GetModuleFileNameW(), GetModuleHandleForUnicodeString(), GetNamedPipeHandleStateA(), GetNamedPipeHandleStateW(), GetNamedPipeInfo(), GetNextVDMCommand(), GetNumaAvailableMemoryNode(), GetNumaHighestNodeNumber(), GetNumaNodeProcessorMask(), GetNumaProcessorNode(), GetNumberOfConsoleFonts(), GetNumberOfConsoleInputEvents(), GetNumberOfConsoleMouseButtons(), GetOverlappedResult(), GetPriorityClass(), GetProcAddress(), GetProcessAffinityMask(), GetProcessHandleCount(), GetProcessId(), GetProcessIdOfThread(), GetProcessIoCounters(), GetProcessPriorityBoost(), GetProcessShutdownParameters(), GetProcessTimes(), GetProcessVersion(), GetProcessWorkingSetSizeEx(), GetQueuedCompletionStatus(), GetShortPathNameA(), GetSystemPowerStatus(), GetSystemRegistryQuota(), GetSystemTimeAdjustment(), GetSystemTimes(), GetTempFileNameA(), GetThreadContext(), GetThreadId(), GetThreadIOPendingFlag(), GetThreadPriority(), GetThreadPriorityBoost(), GetThreadSelectorEntry(), GetThreadTimes(), GetTimeZoneInformation(), GetVDMCurrentDirectories(), GetVolumeInformationA(), GetVolumeInformationW(), GetVolumeNameForRoot(), GetVolumeNameForVolumeMountPointA(), GetVolumePathNameA(), GetVolumePathNamesForVolumeNameA(), GetVolumePathNamesForVolumeNameW(), GetWriteWatch(), GlobalFlags(), GlobalFree(), GlobalHandle(), Heap32First(), Heap32ListFirst(), Heap32ListNext(), Heap32Next(), HeapExtend(), HeapQueryInformation(), HeapSetInformation(), HeapSummary(), HeapUsage(), InitializeCriticalSectionAndSpinCount(), IntAddConsoleAlias(), IntAllocConsole(), IntAttachConsole(), InternalAddAtom(), InternalDeleteAtom(), InternalFindAtom(), InternalGetAtomName(), InternalOpenDirW(), IntExpungeConsoleCommandHistory(), IntFillConsoleOutputCode(), IntGetConsoleAlias(), IntGetConsoleAliases(), IntGetConsoleAliasesLength(), IntGetConsoleAliasExes(), IntGetConsoleAliasExesLength(), IntGetConsoleCommandHistory(), IntGetConsoleCommandHistoryLength(), IntGetConsoleInput(), IntGetConsoleKeyboardLayoutName(), IntGetConsoleTitle(), IntReadConsole(), IntReadConsoleOutput(), IntReadConsoleOutputCode(), IntScrollConsoleScreenBuffer(), IntSetConsoleNumberOfCommands(), IntSetConsoleTitle(), IntWriteConsole(), IntWriteConsoleInput(), IntWriteConsoleOutput(), IntWriteConsoleOutputCode(), InvalidateConsoleDIBits(), IsProcessInJob(), IsWow64Process(), LoadLibraryExW(), LoadModule(), LockFile(), LockFileEx(), MapUserPhysicalPages(), MapUserPhysicalPagesScatter(), MapViewOfFileEx(), Module32FirstW(), Module32NextW(), MoveFileWithProgressW(), OpenConsoleW(), OpenFile(), OpenFileMappingW(), OpenProcess(), OpenThread(), PeekNamedPipe(), PostQueuedCompletionStatus(), PrivMoveFileIdentityW(), Process32FirstW(), Process32NextW(), ProcessIdToHandle(), ProcessIdToSessionId(), PulseEvent(), QueryActCtxW(), QueryDosDeviceW(), QueryInformationJobObject(), QueryMemoryResourceNotification(), QueryPerformanceCounter(), QueryPerformanceFrequency(), QueueUserAPC(), QueueUserWorkItem(), ReadDirectoryChangesW(), ReadFile(), ReadFileEx(), ReadProcessMemory(), RegisterConsoleVDM(), RegisterWaitForSingleObject(), RegisterWaitForSingleObjectEx(), ReleaseMutex(), ReleaseSemaphore(), RemoveDirectoryW(), RequestDeviceWakeup(), RequestWakeupLatency(), ResetEvent(), ResetWriteWatch(), ResumeThread(), SearchPathA(), SearchPathW(), SetComputerNameToRegistry(), SetConsoleActiveScreenBuffer(), SetConsoleCommandHistoryMode(), SetConsoleCP(), SetConsoleCursor(), SetConsoleCursorInfo(), SetConsoleCursorPosition(), SetConsoleDisplayMode(), SetConsoleFont(), SetConsoleHandleInformation(), SetConsoleHardwareState(), SetConsoleIcon(), SetConsoleMenuClose(), SetConsoleMode(), SetConsoleOutputCP(), SetConsolePalette(), SetConsoleScreenBufferSize(), SetConsoleTextAttribute(), SetConsoleWindowInfo(), SetCurrentDirectoryA(), SetCurrentDirectoryW(), SetDllDirectoryA(), SetEndOfFile(), SetEnvironmentVariableA(), SetEnvironmentVariableW(), SetEvent(), SetFileAttributesByHandle(), SetFileAttributesW(), SetFileInformationByHandle(), SetFilePointer(), SetFilePointerEx(), SetFileShortNameW(), SetFileTime(), SetFileValidData(), SetHandleInformation(), SetInformationJobObject(), SetLocalTime(), SetMailslotInfo(), SetNamedPipeHandleState(), SetPriorityClass(), SetProcessAffinityMask(), SetProcessPriorityBoost(), SetProcessShutdownParameters(), SetProcessWorkingSetSizeEx(), SetSystemPowerState(), SetSystemTime(), SetSystemTimeAdjustment(), SetThreadAffinityMask(), SetThreadContext(), SetThreadExecutionState(), SetThreadIdealProcessor(), SetThreadPriority(), SetThreadPriorityBoost(), SetTimerQueueTimer(), SetTimeZoneInformation(), SetVDMCurrentDirectories(), SetVolumeLabelW(), SetWaitableTimer(), SignalObjectAndWait(), SuspendThread(), SystemTimeToFileTime(), TerminateJobObject(), TerminateProcess(), TerminateThread(), Thread32First(), Thread32Next(), TlsAlloc(), TlsFree(), TlsGetValue(), TlsSetValue(), TransactNamedPipe(), UnlockFile(), UnlockFileEx(), UnmapViewOfFile(), UnregisterWait(), UnregisterWaitEx(), VerifyConsoleIoHandle(), VirtualAllocEx(), VirtualFreeEx(), VirtualLock(), VirtualProtectEx(), VirtualQueryEx(), VirtualUnlock(), WaitForDebugEvent(), WaitForMultipleObjectsEx(), WaitForSingleObjectEx(), WaitNamedPipeW(), Wow64DisableWow64FsRedirection(), Wow64EnableWow64FsRedirection(), Wow64RevertWow64FsRedirection(), WriteFile(), WriteFileEx(), WriteProcessMemory(), and ZombifyActCtx().

167 {
168  DWORD dwErrCode;
169  dwErrCode = RtlNtStatusToDosError(Status);
170  SetLastError(dwErrCode);
171  return dwErrCode;
172 }
ULONG NTAPI RtlNtStatusToDosError(IN NTSTATUS Status)
Definition: error.c:96
DWORD DWORD
Definition: winlogon.h:75
#define SetLastError(x)
Definition: compat.h:409
Status
Definition: gdiplustypes.h:24
DEFINE_GUID ( CLSID_WICImagingFactory  ,
0xcacaf262  ,
0x9370  ,
0x4615  ,
0xa1  ,
0x3b  ,
0x9f  ,
0x55  ,
0x39  ,
0xda  ,
0x4c  ,
0x0a   
)
NTSTATUS WINAPI RtlUTF8ToUnicodeN ( PWSTR  uni_dest,
ULONG  uni_bytes_max,
PULONG  uni_bytes_written,
PCCH  utf8_src,
ULONG  utf8_bytes 
)

Definition at line 21 of file reactos.cpp.

Referenced by _Dispatch_type_(), get_reparse_block(), get_reparse_point(), load_dir_children(), log_file_checksum_error(), open_fcb(), open_fileref_by_inode(), and BtrfsRecv::utf8_to_utf16().

24 {
26  ULONG i, j;
27  ULONG written;
28  ULONG ch;
29  ULONG utf8_trail_bytes;
30  WCHAR utf16_ch[3];
31  ULONG utf16_ch_len;
32 
33  if (!utf8_src)
35  if (!uni_bytes_written)
37 
38  written = 0;
39  status = STATUS_SUCCESS;
40 
41  for (i = 0; i < utf8_bytes; i++)
42  {
43  /* read UTF-8 lead byte */
44  ch = (BYTE)utf8_src[i];
45  utf8_trail_bytes = 0;
46  if (ch >= 0xf5)
47  {
48  ch = 0xfffd;
49  status = STATUS_SOME_NOT_MAPPED;
50  }
51  else if (ch >= 0xf0)
52  {
53  ch &= 0x07;
54  utf8_trail_bytes = 3;
55  }
56  else if (ch >= 0xe0)
57  {
58  ch &= 0x0f;
59  utf8_trail_bytes = 2;
60  }
61  else if (ch >= 0xc2)
62  {
63  ch &= 0x1f;
64  utf8_trail_bytes = 1;
65  }
66  else if (ch >= 0x80)
67  {
68  /* overlong or trail byte */
69  ch = 0xfffd;
70  status = STATUS_SOME_NOT_MAPPED;
71  }
72 
73  /* read UTF-8 trail bytes */
74  if (i + utf8_trail_bytes < utf8_bytes)
75  {
76  for (j = 0; j < utf8_trail_bytes; j++)
77  {
78  if ((utf8_src[i + 1] & 0xc0) == 0x80)
79  {
80  ch <<= 6;
81  ch |= utf8_src[i + 1] & 0x3f;
82  i++;
83  }
84  else
85  {
86  ch = 0xfffd;
87  utf8_trail_bytes = 0;
88  status = STATUS_SOME_NOT_MAPPED;
89  break;
90  }
91  }
92  }
93  else
94  {
95  ch = 0xfffd;
96  utf8_trail_bytes = 0;
97  status = STATUS_SOME_NOT_MAPPED;
98  i = utf8_bytes;
99  }
100 
101  /* encode ch as UTF-16 */
102  if ((ch > 0x10ffff) ||
103  (ch >= 0xd800 && ch <= 0xdfff) ||
104  (utf8_trail_bytes == 2 && ch < 0x00800) ||
105  (utf8_trail_bytes == 3 && ch < 0x10000))
106  {
107  /* invalid codepoint or overlong encoding */
108  utf16_ch[0] = 0xfffd;
109  utf16_ch[1] = 0xfffd;
110  utf16_ch[2] = 0xfffd;
111  utf16_ch_len = utf8_trail_bytes;
112  status = STATUS_SOME_NOT_MAPPED;
113  }
114  else if (ch >= 0x10000)
115  {
116  /* surrogate pair */
117  ch -= 0x010000;
118  utf16_ch[0] = 0xd800 + (ch >> 10 & 0x3ff);
119  utf16_ch[1] = 0xdc00 + (ch >> 0 & 0x3ff);
120  utf16_ch_len = 2;
121  }
122  else
123  {
124  /* single unit */
125  utf16_ch[0] = ch;
126  utf16_ch_len = 1;
127  }
128 
129  if (!uni_dest)
130  {
131  written += utf16_ch_len;
132  continue;
133  }
134 
135  for (j = 0; j < utf16_ch_len; j++)
136  {
137  if (uni_bytes_max >= sizeof(WCHAR))
138  {
139  *uni_dest++ = utf16_ch[j];
140  uni_bytes_max -= sizeof(WCHAR);
141  written++;
142  }
143  else
144  {
145  uni_bytes_max = 0;
146  status = STATUS_BUFFER_TOO_SMALL;
147  }
148  }
149  }
150 
151  *uni_bytes_written = written * sizeof(WCHAR);
152  return status;
153 }
GLenum GLclampf GLint GLenum GLuint GLenum GLenum GLsizei GLenum const GLvoid GLfloat GLfloat GLfloat GLfloat GLclampd GLint GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean GLboolean GLboolean GLboolean GLint GLenum GLsizei const GLvoid GLenum GLint GLenum GLint GLint GLsizei GLint GLenum GLint GLint GLint GLint GLsizei GLenum GLsizei const GLuint GLboolean GLenum GLenum GLint GLsizei GLenum GLsizei GLenum const GLvoid GLboolean const GLboolean GLenum const GLdouble const GLfloat const GLdouble const GLfloat GLenum GLint GLint GLint GLint GLint GLint j
Definition: glfuncs.h:98
#define STATUS_INVALID_PARAMETER
Definition: udferr_usr.h:135
__wchar_t WCHAR
Definition: xmlstorage.h:180
return STATUS_SUCCESS
Definition: btrfs.c:2664
#define WCHAR
Definition: msvc.h:43
#define STATUS_BUFFER_TOO_SMALL
Definition: shellext.h:50
GLenum GLclampf GLint i
Definition: glfuncs.h:14
unsigned char BYTE
Definition: ntddk_ex.h:96
#define STATUS_SOME_NOT_MAPPED
Definition: ntstatus.h:86
LONG NTSTATUS
Definition: DriverTester.h:11
unsigned int ULONG
Definition: retypes.h:1
#define STATUS_INVALID_PARAMETER_4
Definition: ntstatus.h:464
static SERVICE_STATUS status
Definition: service.c:26
BOOL WINAPI SetFileInformationByHandle ( HANDLE  hFile,
FILE_INFO_BY_HANDLE_CLASS  FileInformationClass,
LPVOID  lpFileInformation,
DWORD  dwBufferSize 
)

Definition at line 177 of file reactos.cpp.

Referenced by BtrfsPropSheet::apply_changes_file(), BtrfsRecv::cmd_utimes(), BtrfsRecv::cmd_write(), BtrfsContextMenu::reflink_copy(), reflink_copy2(), send_subvol(), BtrfsSend::SendDlgProc(), and BtrfsSend::Thread().

181 {
184  FILE_INFORMATION_CLASS FileInfoClass;
185 
186  FileInfoClass = (FILE_INFORMATION_CLASS)-1;
187 
188  /* Attempt to convert the class */
189  if (FileInformationClass < MaximumFileInfoByHandlesClass)
190  {
191  FileInfoClass = ConvertToFileInfo[FileInformationClass];
192  }
193 
194  /* If wrong, bail out */
195  if (FileInfoClass == -1)
196  {
198  return FALSE;
199  }
200 
201  /* And set the information */
202  Status = NtSetInformationFile(hFile, &IoStatusBlock, lpFileInformation,
203  dwBufferSize, FileInfoClass);
204 
205  if (!NT_SUCCESS(Status))
206  {
207  BaseSetLastNTError(Status);
208  return FALSE;
209  }
210 
211  return TRUE;
212 }
#define ERROR_INVALID_PARAMETER
Definition: compat.h:91
FILE_INFORMATION_CLASS ConvertToFileInfo[MaximumFileInfoByHandlesClass]
Definition: reactos.cpp:156
#define TRUE
Definition: types.h:120
static OUT PIO_STATUS_BLOCK OUT PVOID IN ULONG IN FILE_INFORMATION_CLASS FileInformationClass
Definition: pipe.c:75
#define FALSE
Definition: types.h:117
DWORD BaseSetLastNTError(IN NTSTATUS Status)
Definition: reactos.cpp:166
enum _FILE_INFORMATION_CLASS FILE_INFORMATION_CLASS
Definition: file.c:104
#define NT_SUCCESS(StatCode)
Definition: apphelp.c:24
#define SetLastError(x)
Definition: compat.h:409
_In_ HANDLE hFile
Definition: mswsock.h:90
Status
Definition: gdiplustypes.h:24
LONG NTSTATUS
Definition: DriverTester.h:11
static OUT PIO_STATUS_BLOCK IoStatusBlock
Definition: pipe.c:75
NTSYSAPI NTSTATUS NTAPI NtSetInformationFile(IN HANDLE hFile, OUT PIO_STATUS_BLOCK pIoStatusBlock, IN PVOID FileInformationBuffer, IN ULONG FileInformationBufferLength, IN FILE_INFORMATION_CLASS FileInfoClass)
Definition: iofunc.c:2817

Variable Documentation