26{
35
36
38
39
41 {
44 }
45
47 {
48
53 {
54
57 }
58
59
64 lpSecurityAttributes ?
65 lpSecurityAttributes->lpSecurityDescriptor :
74 {
75
78 }
79
80
82 {
83
86 }
87
88
91 if (!LinkInformation)
92 {
93
96 }
97
98
105 LinkInformation,
106 NeededSize,
109 {
110
112 }
113 else
114 {
115
117 }
118 }
120 {
121
125 if (LinkInformation)
RtlFreeHeap(RtlGetProcessHeap(), 0, LinkInformation);
126 }
128 return Ret;
129}
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)
IN PUNICODE_STRING IN POBJECT_ATTRIBUTES ObjectAttributes
#define ERROR_NOT_ENOUGH_MEMORY
#define NT_SUCCESS(StatCode)
#define ERROR_INVALID_PARAMETER
#define INVALID_HANDLE_VALUE
#define FILE_OPEN_REPARSE_POINT
struct _FILE_LINK_INFORMATION FILE_LINK_INFORMATION
#define FILE_SYNCHRONOUS_IO_NONALERT
#define OBJ_CASE_INSENSITIVE
static OUT PIO_STATUS_BLOCK IoStatusBlock
#define InitializeObjectAttributes(p, n, a, r, s)
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)
NTSYSAPI NTSTATUS NTAPI NtOpenFile(OUT PHANDLE phFile, IN ACCESS_MASK DesiredAccess, IN POBJECT_ATTRIBUTES ObjectAttributes, OUT PIO_STATUS_BLOCK pIoStatusBlock, IN ULONG ShareMode, IN ULONG OpenMode)
NTSYSAPI NTSTATUS NTAPI NtSetInformationFile(IN HANDLE hFile, OUT PIO_STATUS_BLOCK pIoStatusBlock, IN PVOID FileInformationBuffer, IN ULONG FileInformationBufferLength, IN FILE_INFORMATION_CLASS FileInfoClass)
#define FILE_SHARE_DELETE
#define FILE_WRITE_ATTRIBUTES
NTSTATUS NTAPI NtClose(IN HANDLE Handle)
DWORD BaseSetLastNTError(IN NTSTATUS Status)
#define RtlMoveMemory(Destination, Source, Length)
#define ERROR_PATH_NOT_FOUND
_Inout_ PUNICODE_STRING LinkTarget