From 01269a0b0089608ca11212e10ece84f1e1db5507 Mon Sep 17 00:00:00 2001 From: Alex Henrie Date: Thu, 24 Oct 2019 21:20:54 -0600 Subject: [PATCH] ntoskrnl: Implement IoCreateUnprotectedSymbolicLink. Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=47986 Signed-off-by: Alex Henrie Signed-off-by: Alexandre Julliard (cherry picked from commit 380d31b17ae96d231d6d0e802d17bb6dc3d1a11d) Signed-off-by: Michael Stefaniuc --- dlls/ntoskrnl.exe/ntoskrnl.c | 21 +++++++++++++++++++++ dlls/ntoskrnl.exe/ntoskrnl.exe.spec | 2 +- 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/dlls/ntoskrnl.exe/ntoskrnl.c b/dlls/ntoskrnl.exe/ntoskrnl.c index 5958907a1e5..a84805b7033 100644 --- a/dlls/ntoskrnl.exe/ntoskrnl.c +++ b/dlls/ntoskrnl.exe/ntoskrnl.c @@ -1312,6 +1312,27 @@ NTSTATUS WINAPI IoCreateSymbolicLink( UNICODE_STRING *name, UNICODE_STRING *targ } +/*********************************************************************** + * IoCreateUnprotectedSymbolicLink (NTOSKRNL.EXE.@) + */ +NTSTATUS WINAPI IoCreateUnprotectedSymbolicLink( UNICODE_STRING *name, UNICODE_STRING *target ) +{ + HANDLE handle; + OBJECT_ATTRIBUTES attr; + + attr.Length = sizeof(attr); + attr.RootDirectory = 0; + attr.ObjectName = name; + attr.Attributes = OBJ_CASE_INSENSITIVE | OBJ_OPENIF; + attr.SecurityDescriptor = NULL; + attr.SecurityQualityOfService = NULL; + + TRACE( "%s -> %s\n", debugstr_us(name), debugstr_us(target) ); + /* FIXME: store handle somewhere */ + return NtCreateSymbolicLinkObject( &handle, SYMBOLIC_LINK_ALL_ACCESS, &attr, target ); +} + + /*********************************************************************** * IoDeleteSymbolicLink (NTOSKRNL.EXE.@) */ diff --git a/dlls/ntoskrnl.exe/ntoskrnl.exe.spec b/dlls/ntoskrnl.exe/ntoskrnl.exe.spec index c62a79eb0a7..64090ac0c4d 100644 --- a/dlls/ntoskrnl.exe/ntoskrnl.exe.spec +++ b/dlls/ntoskrnl.exe/ntoskrnl.exe.spec @@ -350,7 +350,7 @@ @ stub IoCreateStreamFileObjectLite @ stdcall IoCreateSymbolicLink(ptr ptr) @ stdcall IoCreateSynchronizationEvent(ptr ptr) -@ stub IoCreateUnprotectedSymbolicLink +@ stdcall IoCreateUnprotectedSymbolicLink(ptr ptr) @ stdcall IoCsqInitialize(ptr ptr ptr ptr ptr ptr ptr) @ stub IoCsqInsertIrp @ stub IoCsqRemoveIrp