ReactOS 0.4.16-dev-1946-g52006dd
vista.c File Reference
#include <k32_vista.h>
#include <debug.h>
Include dependency graph for vista.c:

Go to the source code of this file.

Macros

#define REPARSE_DATA_BUFFER_HEADER_SIZE   FIELD_OFFSET(REPARSE_DATA_BUFFER, GenericReparseBuffer)
 
#define NDEBUG
 

Functions

BOOL WINAPI QueryFullProcessImageNameW (_In_ HANDLE hProcess, _In_ DWORD dwFlags, _Out_writes_to_(*lpdwSize, *lpdwSize) LPWSTR lpExeName, _Inout_ PDWORD lpdwSize)
 
BOOL WINAPI QueryFullProcessImageNameA (_In_ HANDLE hProcess, _In_ DWORD dwFlags, _Out_writes_to_(*lpdwSize, *lpdwSize) LPSTR lpExeName, _Inout_ PDWORD lpdwSize)
 
HRESULT WINAPI GetApplicationRecoveryCallback (IN HANDLE hProcess, OUT APPLICATION_RECOVERY_CALLBACK *pRecoveryCallback, OUT PVOID *ppvParameter, PDWORD dwPingInterval, PDWORD dwFlags)
 
HRESULT WINAPI GetApplicationRestart (IN HANDLE hProcess, OUT PWSTR pwzCommandline OPTIONAL, IN OUT PDWORD pcchSize, OUT PDWORD pdwFlags OPTIONAL)
 
VOID WINAPI ApplicationRecoveryFinished (IN BOOL bSuccess)
 
HRESULT WINAPI ApplicationRecoveryInProgress (OUT PBOOL pbCancelled)
 
HRESULT WINAPI RegisterApplicationRecoveryCallback (IN APPLICATION_RECOVERY_CALLBACK pRecoveryCallback, IN PVOID pvParameter OPTIONAL, DWORD dwPingInterval, DWORD dwFlags)
 
HRESULT WINAPI RegisterApplicationRestart (IN PCWSTR pwzCommandline OPTIONAL, IN DWORD dwFlags)
 
BOOLEAN WINAPI CreateSymbolicLinkW (IN LPCWSTR lpSymlinkFileName, IN LPCWSTR lpTargetFileName, IN DWORD dwFlags)
 
BOOLEAN NTAPI CreateSymbolicLinkA (IN LPCSTR lpSymlinkFileName, IN LPCSTR lpTargetFileName, IN DWORD dwFlags)
 
DWORD WINAPI GetFinalPathNameByHandleA (IN HANDLE hFile, OUT LPSTR lpszFilePath, IN DWORD cchFilePath, IN DWORD dwFlags)
 
BOOL WINAPI SetFileBandwidthReservation (IN HANDLE hFile, IN DWORD nPeriodMilliseconds, IN DWORD nBytesPerPeriod, IN BOOL bDiscardable, OUT LPDWORD lpTransferSize, OUT LPDWORD lpNumOutstandingRequests)
 
BOOL WINAPI GetFileBandwidthReservation (IN HANDLE hFile, OUT LPDWORD lpPeriodMilliseconds, OUT LPDWORD lpBytesPerPeriod, OUT LPBOOL pDiscardable, OUT LPDWORD lpTransferSize, OUT LPDWORD lpNumOutstandingRequests)
 
HANDLE WINAPI OpenFileById (IN HANDLE hFile, IN LPFILE_ID_DESCRIPTOR lpFileID, IN DWORD dwDesiredAccess, IN DWORD dwShareMode, IN LPSECURITY_ATTRIBUTES lpSecurityAttributes OPTIONAL, IN DWORD dwFlags)
 
BOOL WINAPI GetFileMUIInfo (DWORD dwFlags, PCWSTR pcwszFilePath, PFILEMUIINFO pFileMUIInfo, DWORD *pcbFileMUIInfo)
 
BOOL WINAPI GetFileMUIPath (DWORD dwFlags, PCWSTR pcwszFilePath, PWSTR pwszLanguage, PULONG pcchLanguage, PWSTR pwszFileMUIPath, PULONG pcchFileMUIPath, PULONGLONG pululEnumerator)
 
BOOL WINAPI GetSystemPreferredUILanguages (DWORD dwFlags, PULONG pulNumLanguages, PZZWSTR pwszLanguagesBuffer, PULONG pcchLanguagesBuffer)
 
BOOL WINAPI GetThreadPreferredUILanguages (DWORD dwFlags, PULONG pulNumLanguages, PZZWSTR pwszLanguagesBuffer, PULONG pcchLanguagesBuffer)
 
LANGID WINAPI GetThreadUILanguage (VOID)
 
BOOL WINAPI GetUILanguageInfo (DWORD dwFlags, PCZZWSTR pwmszLanguage, PZZWSTR pwszFallbackLanguages, PDWORD pcchFallbackLanguages, PDWORD pdwAttributes)
 
BOOL WINAPI GetUserPreferredUILanguages (DWORD dwFlags, PULONG pulNumLanguages, PZZWSTR pwszLanguagesBuffer, PULONG pcchLanguagesBuffer)
 
BOOL WINAPI SetThreadPreferredUILanguages (DWORD dwFlags, PCZZWSTR pwszLanguagesBuffer, PULONG pulNumLanguages)
 

Macro Definition Documentation

◆ NDEBUG

#define NDEBUG

Definition at line 19 of file vista.c.

◆ REPARSE_DATA_BUFFER_HEADER_SIZE

#define REPARSE_DATA_BUFFER_HEADER_SIZE   FIELD_OFFSET(REPARSE_DATA_BUFFER, GenericReparseBuffer)

Definition at line 17 of file vista.c.

Function Documentation

◆ ApplicationRecoveryFinished()

VOID WINAPI ApplicationRecoveryFinished ( IN BOOL  bSuccess)

Definition at line 168 of file vista.c.

169{
171}
#define UNIMPLEMENTED
Definition: ntoskrnl.c:15

◆ ApplicationRecoveryInProgress()

HRESULT WINAPI ApplicationRecoveryInProgress ( OUT PBOOL  pbCancelled)

Definition at line 179 of file vista.c.

180{
182 return E_FAIL;
183}
#define E_FAIL
Definition: ddrawi.h:102

◆ CreateSymbolicLinkA()

BOOLEAN NTAPI CreateSymbolicLinkA ( IN LPCSTR  lpSymlinkFileName,
IN LPCSTR  lpTargetFileName,
IN DWORD  dwFlags 
)

Definition at line 422 of file vista.c.

425{
426 PWCHAR SymlinkW, TargetW;
427 BOOLEAN Ret;
428
429 if(!lpSymlinkFileName || !lpTargetFileName)
430 {
432 return FALSE;
433 }
434
435 if (!(SymlinkW = FilenameA2W(lpSymlinkFileName, FALSE)))
436 return FALSE;
437
438 if (!(TargetW = FilenameA2W(lpTargetFileName, TRUE)))
439 return FALSE;
440
441 Ret = CreateSymbolicLinkW(SymlinkW,
442 TargetW,
443 dwFlags);
444
445 RtlFreeHeap(RtlGetProcessHeap(), 0, SymlinkW);
446 RtlFreeHeap(RtlGetProcessHeap(), 0, TargetW);
447
448 return Ret;
449}
unsigned char BOOLEAN
BOOLEAN NTAPI RtlFreeHeap(IN PVOID HeapHandle, IN ULONG Flags, IN PVOID HeapBase)
Definition: heap.c:634
#define TRUE
Definition: types.h:120
#define FALSE
Definition: types.h:117
#define ERROR_INVALID_PARAMETER
Definition: compat.h:101
#define SetLastError(x)
Definition: compat.h:752
PWCHAR FilenameA2W(LPCSTR NameA, BOOL alloc)
Definition: fileutils.c:18
BOOLEAN WINAPI CreateSymbolicLinkW(IN LPCWSTR lpSymlinkFileName, IN LPCWSTR lpTargetFileName, IN DWORD dwFlags)
Definition: vista.c:219
_In_ LPWSTR _In_ DWORD _In_ DWORD _In_ DWORD dwFlags
Definition: netsh.h:141
uint16_t * PWCHAR
Definition: typedefs.h:56

◆ CreateSymbolicLinkW()

BOOLEAN WINAPI CreateSymbolicLinkW ( IN LPCWSTR  lpSymlinkFileName,
IN LPCWSTR  lpTargetFileName,
IN DWORD  dwFlags 
)

Definition at line 219 of file vista.c.

222{
225 HANDLE hSymlink = NULL;
226 UNICODE_STRING SymlinkFileName = { 0, 0, NULL };
227 UNICODE_STRING TargetFileName = { 0, 0, NULL };
228 BOOLEAN bAllocatedTarget = FALSE, bRelativePath = FALSE;
229 LPWSTR lpTargetFullFileName = NULL;
230 SIZE_T cbPrintName;
231 SIZE_T cbReparseData;
232 PREPARSE_DATA_BUFFER pReparseData = NULL;
233 PBYTE pBufTail;
235 ULONG dwCreateOptions;
236 DWORD dwErr;
237
238 if(!lpSymlinkFileName || !lpTargetFileName || (dwFlags | SYMBOLIC_LINK_FLAG_DIRECTORY) != SYMBOLIC_LINK_FLAG_DIRECTORY)
239 {
241 return FALSE;
242 }
243
244 if(dwFlags & SYMBOLIC_LINK_FLAG_DIRECTORY)
245 dwCreateOptions = FILE_DIRECTORY_FILE;
246 else
247 dwCreateOptions = FILE_NON_DIRECTORY_FILE;
248
249 switch(RtlDetermineDosPathNameType_U(lpTargetFileName))
250 {
254 bRelativePath = TRUE;
255 RtlInitUnicodeString(&TargetFileName, lpTargetFileName);
256 break;
257
259 {
260 LPWSTR FilePart;
261 SIZE_T cchTargetFullFileName;
262
263 cchTargetFullFileName = GetFullPathNameW(lpTargetFileName, 0, NULL, &FilePart);
264
265 if(cchTargetFullFileName == 0)
266 {
268 goto Cleanup;
269 }
270
271 lpTargetFullFileName = RtlAllocateHeap(RtlGetProcessHeap(), 0, cchTargetFullFileName * sizeof(WCHAR));
272
273 if(lpTargetFullFileName == NULL)
274 {
276 goto Cleanup;
277 }
278
279 if(GetFullPathNameW(lpTargetFileName, cchTargetFullFileName, lpTargetFullFileName, &FilePart) == 0)
280 {
282 goto Cleanup;
283 }
284 }
285
286 lpTargetFileName = lpTargetFullFileName;
287
288 // fallthrough
289
294 default:
295 if(!RtlDosPathNameToNtPathName_U(lpTargetFileName, &TargetFileName, NULL, NULL))
296 {
297 bAllocatedTarget = TRUE;
299 goto Cleanup;
300 }
301 }
302
303 cbPrintName = wcslen(lpTargetFileName) * sizeof(WCHAR);
304 cbReparseData = FIELD_OFFSET(REPARSE_DATA_BUFFER, SymbolicLinkReparseBuffer.PathBuffer) + TargetFileName.Length + cbPrintName;
305 pReparseData = RtlAllocateHeap(RtlGetProcessHeap(), 0, cbReparseData);
306
307 if(pReparseData == NULL)
308 {
310 goto Cleanup;
311 }
312
313 pBufTail = (PBYTE)(pReparseData->SymbolicLinkReparseBuffer.PathBuffer);
314
315 pReparseData->ReparseTag = (ULONG)IO_REPARSE_TAG_SYMLINK;
316 pReparseData->ReparseDataLength = (USHORT)cbReparseData - REPARSE_DATA_BUFFER_HEADER_SIZE;
317 pReparseData->Reserved = 0;
318
319 pReparseData->SymbolicLinkReparseBuffer.SubstituteNameOffset = 0;
320 pReparseData->SymbolicLinkReparseBuffer.SubstituteNameLength = TargetFileName.Length;
321 pBufTail += pReparseData->SymbolicLinkReparseBuffer.SubstituteNameOffset;
322 RtlCopyMemory(pBufTail, TargetFileName.Buffer, TargetFileName.Length);
323
324 pReparseData->SymbolicLinkReparseBuffer.PrintNameOffset = pReparseData->SymbolicLinkReparseBuffer.SubstituteNameLength;
325 pReparseData->SymbolicLinkReparseBuffer.PrintNameLength = (USHORT)cbPrintName;
326 pBufTail += pReparseData->SymbolicLinkReparseBuffer.PrintNameOffset;
327 RtlCopyMemory(pBufTail, lpTargetFileName, cbPrintName);
328
329 pReparseData->SymbolicLinkReparseBuffer.Flags = 0;
330
331 if(bRelativePath)
332 pReparseData->SymbolicLinkReparseBuffer.Flags |= 1; // TODO! give this lone flag a name
333
334 if(!RtlDosPathNameToNtPathName_U(lpSymlinkFileName, &SymlinkFileName, NULL, NULL))
335 {
337 goto Cleanup;
338 }
339
341
343 (
344 &hSymlink,
348 NULL,
350 0,
353 NULL,
354 0
355 );
356
357 if(!NT_SUCCESS(Status))
358 {
360 goto Cleanup;
361 }
362
364 (
365 hSymlink,
366 NULL,
367 NULL,
368 NULL,
371 pReparseData,
372 cbReparseData,
373 NULL,
374 0
375 );
376
377 if(!NT_SUCCESS(Status))
378 {
380 DispInfo.DeleteFile = TRUE;
381 NtSetInformationFile(hSymlink, &IoStatusBlock, &DispInfo, sizeof(DispInfo), FileDispositionInformation);
382
384 goto Cleanup;
385 }
386
387 dwErr = NO_ERROR;
388
389Cleanup:
390 if(hSymlink)
391 NtClose(hSymlink);
392
393 RtlFreeUnicodeString(&SymlinkFileName);
394 if (bAllocatedTarget)
395 {
396 RtlFreeHeap(RtlGetProcessHeap(),
397 0,
398 TargetFileName.Buffer);
399 }
400
401 if(lpTargetFullFileName)
402 RtlFreeHeap(RtlGetProcessHeap(), 0, lpTargetFullFileName);
403
404 if(pReparseData)
405 RtlFreeHeap(RtlGetProcessHeap(), 0, pReparseData);
406
407 if(dwErr)
408 {
410 return FALSE;
411 }
412
413 return TRUE;
414}
LONG NTSTATUS
Definition: precomp.h:26
#define FILE_DIRECTORY_FILE
Definition: constants.h:491
#define FILE_NON_DIRECTORY_FILE
Definition: constants.h:492
DWORD dwErr
Definition: service.c:36
PVOID NTAPI RtlAllocateHeap(IN PVOID HeapHandle, IN ULONG Flags, IN SIZE_T Size)
Definition: heap.c:616
IN PUNICODE_STRING IN POBJECT_ATTRIBUTES ObjectAttributes
Definition: conport.c:36
#define ERROR_NOT_ENOUGH_MEMORY
Definition: dderror.h:7
#define NO_ERROR
Definition: dderror.h:5
#define NULL
Definition: types.h:112
#define NT_SUCCESS(StatCode)
Definition: apphelp.c:33
#define FILE_ATTRIBUTE_NORMAL
Definition: compat.h:137
DWORD WINAPI GetFullPathNameW(IN LPCWSTR lpFileName, IN DWORD nBufferLength, OUT LPWSTR lpBuffer, OUT LPWSTR *lpFilePart)
Definition: path.c:1106
static const WCHAR Cleanup[]
Definition: register.c:80
unsigned long DWORD
Definition: ntddk_ex.h:95
@ FileDispositionInformation
Definition: from_kernel.h:74
#define FILE_CREATE
Definition: from_kernel.h:55
#define FILE_OPEN_REPARSE_POINT
Definition: from_kernel.h:46
#define FILE_SYNCHRONOUS_IO_NONALERT
Definition: from_kernel.h:31
Status
Definition: gdiplustypes.h:25
_CRTIMP size_t __cdecl wcslen(_In_z_ const wchar_t *_Str)
#define OBJ_CASE_INSENSITIVE
Definition: winternl.h:228
NTSYSAPI ULONG WINAPI RtlNtStatusToDosError(NTSTATUS)
#define REPARSE_DATA_BUFFER_HEADER_SIZE
Definition: vista.c:17
#define InitializeObjectAttributes(p, n, a, r, s)
Definition: reg.c:106
NTSYSAPI RTL_PATH_TYPE NTAPI RtlDetermineDosPathNameType_U(_In_ PCWSTR Path)
NTSYSAPI BOOLEAN NTAPI RtlDosPathNameToNtPathName_U(_In_opt_z_ PCWSTR DosPathName, _Out_ PUNICODE_STRING NtPathName, _Out_opt_ PCWSTR *NtFileNamePart, _Out_opt_ PRTL_RELATIVE_NAME_U DirectoryInfo)
@ RtlPathTypeRootLocalDevice
Definition: rtltypes.h:472
@ RtlPathTypeDriveRelative
Definition: rtltypes.h:468
@ RtlPathTypeRelative
Definition: rtltypes.h:470
@ RtlPathTypeUncAbsolute
Definition: rtltypes.h:466
@ RtlPathTypeRooted
Definition: rtltypes.h:469
@ RtlPathTypeLocalDevice
Definition: rtltypes.h:471
@ RtlPathTypeDriveAbsolute
Definition: rtltypes.h:467
@ RtlPathTypeUnknown
Definition: rtltypes.h:465
#define SYNCHRONIZE
Definition: nt_native.h:61
NTSYSAPI VOID NTAPI RtlInitUnicodeString(PUNICODE_STRING DestinationString, PCWSTR SourceString)
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:3096
#define FILE_WRITE_ATTRIBUTES
Definition: nt_native.h:649
NTSTATUS NTAPI NtClose(IN HANDLE Handle)
Definition: obhandle.c:3402
#define DELETE
Definition: nt_native.h:57
NTSYSAPI VOID NTAPI RtlFreeUnicodeString(PUNICODE_STRING UnicodeString)
NTSTATUS NTAPI NtCreateFile(OUT PHANDLE FileHandle, IN ACCESS_MASK DesiredAccess, IN POBJECT_ATTRIBUTES ObjectAttributes, OUT PIO_STATUS_BLOCK IoStatusBlock, IN PLARGE_INTEGER AllocationSize OPTIONAL, IN ULONG FileAttributes, IN ULONG ShareAccess, IN ULONG CreateDisposition, IN ULONG CreateOptions, IN PVOID EaBuffer OPTIONAL, IN ULONG EaLength)
NTSYSAPI NTSTATUS NTAPI NtFsControlFile(IN HANDLE hFile, IN HANDLE hEvent OPTIONAL, IN PIO_APC_ROUTINE IoApcRoutine OPTIONAL, IN PVOID IoApcContext OPTIONAL, OUT PIO_STATUS_BLOCK pIoStatusBlock, IN ULONG DeviceIoControlCode, IN PVOID InBuffer OPTIONAL, IN ULONG InBufferLength, OUT PVOID OutBuffer OPTIONAL, IN ULONG OutBufferLength)
static OUT PIO_STATUS_BLOCK IoStatusBlock
Definition: pipe.c:75
BYTE * PBYTE
Definition: pedump.c:66
unsigned short USHORT
Definition: pedump.c:61
#define FSCTL_SET_REPARSE_POINT
Definition: winioctl.h:747
WCHAR PathBuffer[1]
Definition: shellext.h:176
struct _REPARSE_DATA_BUFFER::@347::@349 SymbolicLinkReparseBuffer
USHORT ReparseDataLength
Definition: shellext.h:166
#define FIELD_OFFSET(t, f)
Definition: typedefs.h:255
ULONG_PTR SIZE_T
Definition: typedefs.h:80
#define RtlCopyMemory(Destination, Source, Length)
Definition: typedefs.h:263
uint32_t ULONG
Definition: typedefs.h:59
DWORD WINAPI GetLastError(void)
Definition: except.c:1042
#define ERROR_PATH_NOT_FOUND
Definition: winerror.h:228
#define IO_REPARSE_TAG_SYMLINK
Definition: iotypes.h:7243
__wchar_t WCHAR
Definition: xmlstorage.h:180
WCHAR * LPWSTR
Definition: xmlstorage.h:184

Referenced by CreateSymbolicLinkA().

◆ GetApplicationRecoveryCallback()

HRESULT WINAPI GetApplicationRecoveryCallback ( IN HANDLE  hProcess,
OUT APPLICATION_RECOVERY_CALLBACK *  pRecoveryCallback,
OUT PVOID ppvParameter,
PDWORD  dwPingInterval,
PDWORD  dwFlags 
)

Definition at line 137 of file vista.c.

142{
144 return E_FAIL;
145}

◆ GetApplicationRestart()

HRESULT WINAPI GetApplicationRestart ( IN HANDLE  hProcess,
OUT PWSTR pwzCommandline  OPTIONAL,
IN OUT PDWORD  pcchSize,
OUT PDWORD pdwFlags  OPTIONAL 
)

Definition at line 153 of file vista.c.

157{
159 return E_FAIL;
160}

◆ GetFileBandwidthReservation()

BOOL WINAPI GetFileBandwidthReservation ( IN HANDLE  hFile,
OUT LPDWORD  lpPeriodMilliseconds,
OUT LPDWORD  lpBytesPerPeriod,
OUT LPBOOL  pDiscardable,
OUT LPDWORD  lpTransferSize,
OUT LPDWORD  lpNumOutstandingRequests 
)

Definition at line 541 of file vista.c.

547{
549 return FALSE;
550}

◆ GetFileMUIInfo()

BOOL WINAPI GetFileMUIInfo ( DWORD  dwFlags,
PCWSTR  pcwszFilePath,
PFILEMUIINFO  pFileMUIInfo,
DWORD pcbFileMUIInfo 
)

Definition at line 587 of file vista.c.

592{
595 return FALSE;
596}
#define DPRINT1
Definition: precomp.h:8
#define ERROR_CALL_NOT_IMPLEMENTED
Definition: compat.h:102
_In_ PCWSTR _Inout_updates_bytes_to_opt_ pcbFileMUIInfo PFILEMUIINFO _Inout_ DWORD * pcbFileMUIInfo
Definition: winnls.h:1123
_In_ PCWSTR _Inout_updates_bytes_to_opt_ pcbFileMUIInfo PFILEMUIINFO pFileMUIInfo
Definition: winnls.h:1122
_In_ PCWSTR pcwszFilePath
Definition: winnls.h:1121

◆ GetFileMUIPath()

BOOL WINAPI GetFileMUIPath ( DWORD  dwFlags,
PCWSTR  pcwszFilePath,
PWSTR  pwszLanguage,
PULONG  pcchLanguage,
PWSTR  pwszFileMUIPath,
PULONG  pcchFileMUIPath,
PULONGLONG  pululEnumerator 
)

Definition at line 603 of file vista.c.

611{
612 DPRINT1("%x %p %p %p %p %p\n", dwFlags, pcwszFilePath, pwszLanguage, pwszFileMUIPath, pcchFileMUIPath, pululEnumerator);
614 return FALSE;
615}

◆ GetFinalPathNameByHandleA()

DWORD WINAPI GetFinalPathNameByHandleA ( IN HANDLE  hFile,
OUT LPSTR  lpszFilePath,
IN DWORD  cchFilePath,
IN DWORD  dwFlags 
)

Definition at line 457 of file vista.c.

461{
462 WCHAR FilePathW[MAX_PATH];
463 UNICODE_STRING FilePathU;
464 DWORD PrevLastError;
465 DWORD Ret = 0;
466
467 if (cchFilePath != 0 &&
468 cchFilePath > sizeof(FilePathW) / sizeof(FilePathW[0]))
469 {
470 FilePathU.Length = 0;
471 FilePathU.MaximumLength = (USHORT)cchFilePath * sizeof(WCHAR);
472 FilePathU.Buffer = RtlAllocateHeap(RtlGetProcessHeap(),
473 0,
474 FilePathU.MaximumLength);
475 if (FilePathU.Buffer == NULL)
476 {
478 return 0;
479 }
480 }
481 else
482 {
483 FilePathU.Length = 0;
484 FilePathU.MaximumLength = sizeof(FilePathW);
485 FilePathU.Buffer = FilePathW;
486 }
487
488 /* save the last error code */
489 PrevLastError = GetLastError();
491
492 /* call the unicode version that does all the work */
494 FilePathU.Buffer,
495 cchFilePath,
496 dwFlags);
497
499 {
500 /* no error, restore the last error code and convert the string */
501 SetLastError(PrevLastError);
502
503 Ret = FilenameU2A_FitOrFail(lpszFilePath,
504 cchFilePath,
505 &FilePathU);
506 }
507
508 /* free allocated memory if necessary */
509 if (FilePathU.Buffer != FilePathW)
510 {
511 RtlFreeHeap(RtlGetProcessHeap(),
512 0,
513 FilePathU.Buffer);
514 }
515
516 return Ret;
517}
#define ERROR_SUCCESS
Definition: deptool.c:10
#define MAX_PATH
Definition: compat.h:34
DWORD FilenameU2A_FitOrFail(LPSTR DestA, INT destLen, PUNICODE_STRING SourceU)
Definition: fileutils.c:56
DWORD WINAPI GetFinalPathNameByHandleW(_In_ HANDLE hFile, _Out_writes_(cchFilePath) LPWSTR lpszFilePath, _In_ DWORD cchFilePath, _In_ DWORD dwFlags)
_In_ HANDLE hFile
Definition: mswsock.h:90
USHORT MaximumLength
Definition: env_spec_w32.h:370

◆ GetSystemPreferredUILanguages()

BOOL WINAPI GetSystemPreferredUILanguages ( DWORD  dwFlags,
PULONG  pulNumLanguages,
PZZWSTR  pwszLanguagesBuffer,
PULONG  pcchLanguagesBuffer 
)

Definition at line 640 of file vista.c.

645{
646 DPRINT1("%x %p %p %p\n", dwFlags, pulNumLanguages, pwszLanguagesBuffer, pcchLanguagesBuffer);
648 return FALSE;
649}

◆ GetThreadPreferredUILanguages()

BOOL WINAPI GetThreadPreferredUILanguages ( DWORD  dwFlags,
PULONG  pulNumLanguages,
PZZWSTR  pwszLanguagesBuffer,
PULONG  pcchLanguagesBuffer 
)

Definition at line 656 of file vista.c.

661{
662 DPRINT1("%x %p %p %p\n", dwFlags, pulNumLanguages, pwszLanguagesBuffer, pcchLanguagesBuffer);
664 return FALSE;
665}

◆ GetThreadUILanguage()

LANGID WINAPI GetThreadUILanguage ( VOID  )

Definition at line 672 of file vista.c.

673{
676 return 0;
677}

◆ GetUILanguageInfo()

BOOL WINAPI GetUILanguageInfo ( DWORD  dwFlags,
PCZZWSTR  pwmszLanguage,
PZZWSTR  pwszFallbackLanguages,
PDWORD  pcchFallbackLanguages,
PDWORD  pdwAttributes 
)

Definition at line 684 of file vista.c.

690{
691 DPRINT1("%x %p %p %p %p\n", dwFlags, pwmszLanguage, pwszFallbackLanguages, pcchFallbackLanguages, pdwAttributes);
693 return FALSE;
694}

◆ GetUserPreferredUILanguages()

BOOL WINAPI GetUserPreferredUILanguages ( DWORD  dwFlags,
PULONG  pulNumLanguages,
PZZWSTR  pwszLanguagesBuffer,
PULONG  pcchLanguagesBuffer 
)

Definition at line 702 of file vista.c.

707{
708 DPRINT1("%x %p %p %p\n", dwFlags, pulNumLanguages, pwszLanguagesBuffer, pcchLanguagesBuffer);
710 return FALSE;
711}

Referenced by InitFunctionPointers().

◆ OpenFileById()

HANDLE WINAPI OpenFileById ( IN HANDLE  hFile,
IN LPFILE_ID_DESCRIPTOR  lpFileID,
IN DWORD  dwDesiredAccess,
IN DWORD  dwShareMode,
IN LPSECURITY_ATTRIBUTES lpSecurityAttributes  OPTIONAL,
IN DWORD  dwFlags 
)

Definition at line 558 of file vista.c.

564{
567}
#define INVALID_HANDLE_VALUE
Definition: compat.h:731

◆ QueryFullProcessImageNameA()

BOOL WINAPI QueryFullProcessImageNameA ( _In_ HANDLE  hProcess,
_In_ DWORD  dwFlags,
_Out_writes_to_ *, *lpdwSize LPSTR  lpExeName,
_Inout_ PDWORD  lpdwSize 
)

Definition at line 91 of file vista.c.

96{
97 BOOL bRet = FALSE;
99 PWSTR pszFullName;
100
101 dwSize = *lpdwSize;
102 pszFullName = (PWSTR)RtlAllocateHeap(RtlGetProcessHeap(), 0, dwSize * sizeof(WCHAR));
103 if (!pszFullName)
104 {
106 return FALSE;
107 }
108
110 {
111 INT iCch;
114 pszFullName,
115 dwSize + 1,
116 lpExeName,
117 *lpdwSize,
118 NULL,
119 NULL);
120 if (iCch)
121 {
122 *lpdwSize = iCch - 1;
123 bRet = TRUE;
124 }
125 }
126
127 RtlFreeHeap(RtlGetProcessHeap(), 0, pszFullName);
128 return bRet;
129}
#define STATUS_NO_MEMORY
Definition: d3dkmdt.h:51
#define CP_ACP
Definition: compat.h:109
#define WideCharToMultiByte
Definition: compat.h:111
unsigned int BOOL
Definition: ntddk_ex.h:94
#define WC_NO_BEST_FIT_CHARS
Definition: unicode.h:46
BOOL WINAPI QueryFullProcessImageNameW(_In_ HANDLE hProcess, _In_ DWORD dwFlags, _Out_writes_to_(*lpdwSize, *lpdwSize) LPWSTR lpExeName, _Inout_ PDWORD lpdwSize)
Definition: vista.c:29
_In_ BOOL _In_ HANDLE hProcess
Definition: mapping.h:71
PSDBQUERYRESULT_VISTA PVOID DWORD * dwSize
Definition: env.c:56
static DWORD LPSTR PDWORD lpdwSize
Definition: process.c:72
static DWORD LPSTR lpExeName
Definition: process.c:72
DWORD BaseSetLastNTError(IN NTSTATUS Status)
Definition: reactos.cpp:167
uint16_t * PWSTR
Definition: typedefs.h:56
int32_t INT
Definition: typedefs.h:58

◆ QueryFullProcessImageNameW()

BOOL WINAPI QueryFullProcessImageNameW ( _In_ HANDLE  hProcess,
_In_ DWORD  dwFlags,
_Out_writes_to_ *, *lpdwSize LPWSTR  lpExeName,
_Inout_ PDWORD  lpdwSize 
)

Definition at line 29 of file vista.c.

34{
35 BOOL bRet = FALSE;
36 DWORD dwBufferSize;
39
41 {
43 return FALSE;
44 }
45
46 dwBufferSize = sizeof(UNICODE_STRING) + *lpdwSize * sizeof(WCHAR);
47 pBuffer = (PUNICODE_STRING)RtlAllocateHeap(RtlGetProcessHeap(), 0, dwBufferSize);
48 if (!pBuffer)
49 {
51 return FALSE;
52 }
53
56 pBuffer,
57 dwBufferSize,
58 NULL);
59 if (NT_SUCCESS(Status))
60 {
61 DWORD dwCch = pBuffer->Length / sizeof(WCHAR);
62 if (dwCch >= *lpdwSize)
63 {
65 }
66 else
67 {
68 RtlCopyMemory(lpExeName, pBuffer->Buffer, pBuffer->Length);
69 lpExeName[dwCch] = UNICODE_NULL;
70 *lpdwSize = dwCch;
71 bRet = TRUE;
72 }
73 }
74 else
75 {
79 }
80
81 RtlFreeHeap(RtlGetProcessHeap(), 0, pBuffer);
82 return bRet;
83}
@ ProcessImageFileName
Definition: cicbase.cpp:66
UNICODE_STRING * PUNICODE_STRING
Definition: env_spec_w32.h:373
struct _UNICODE_STRING UNICODE_STRING
@ ProcessImageFileNameWin32
Definition: winternl.h:1925
#define UNICODE_NULL
NTSTATUS NTAPI NtQueryInformationProcess(_In_ HANDLE ProcessHandle, _In_ PROCESSINFOCLASS ProcessInformationClass, _Out_writes_bytes_to_opt_(ProcessInformationLength, *ReturnLength) PVOID ProcessInformation, _In_ ULONG ProcessInformationLength, _Out_opt_ PULONG ReturnLength)
Definition: query.c:211
#define STATUS_INVALID_PARAMETER_2
Definition: ntstatus.h:570
PVOID pBuffer
#define STATUS_BUFFER_TOO_SMALL
Definition: shellext.h:69
#define STATUS_INFO_LENGTH_MISMATCH
Definition: udferr_usr.h:133
#define PROCESS_NAME_NATIVE
Definition: winbase.h:34

Referenced by QueryFullProcessImageNameA().

◆ RegisterApplicationRecoveryCallback()

HRESULT WINAPI RegisterApplicationRecoveryCallback ( IN APPLICATION_RECOVERY_CALLBACK  pRecoveryCallback,
IN PVOID pvParameter  OPTIONAL,
DWORD  dwPingInterval,
DWORD  dwFlags 
)

Definition at line 191 of file vista.c.

195{
197 return E_FAIL;
198}

◆ RegisterApplicationRestart()

HRESULT WINAPI RegisterApplicationRestart ( IN PCWSTR pwzCommandline  OPTIONAL,
IN DWORD  dwFlags 
)

Definition at line 206 of file vista.c.

208{
210 return E_FAIL;
211}

◆ SetFileBandwidthReservation()

BOOL WINAPI SetFileBandwidthReservation ( IN HANDLE  hFile,
IN DWORD  nPeriodMilliseconds,
IN DWORD  nBytesPerPeriod,
IN BOOL  bDiscardable,
OUT LPDWORD  lpTransferSize,
OUT LPDWORD  lpNumOutstandingRequests 
)

Definition at line 524 of file vista.c.

530{
532 return FALSE;
533}

◆ SetThreadPreferredUILanguages()

BOOL WINAPI SetThreadPreferredUILanguages ( DWORD  dwFlags,
PCZZWSTR  pwszLanguagesBuffer,
PULONG  pulNumLanguages 
)

Definition at line 735 of file vista.c.

740{
741 DPRINT1("%x %p %p\n", dwFlags, pwszLanguagesBuffer, pulNumLanguages);
743 return FALSE;
744}