mirror of
https://github.com/reactos/reactos.git
synced 2024-07-05 12:15:46 +00:00
- Moved symbolic link object type.
- Added create time and removed object attributes. svn path=/trunk/; revision=6310
This commit is contained in:
parent
6af69a6d26
commit
09bed329b8
|
@ -35,6 +35,15 @@ typedef struct _DIRECTORY_OBJECT
|
||||||
} DIRECTORY_OBJECT, *PDIRECTORY_OBJECT;
|
} DIRECTORY_OBJECT, *PDIRECTORY_OBJECT;
|
||||||
|
|
||||||
|
|
||||||
|
typedef struct _SYMLINK_OBJECT
|
||||||
|
{
|
||||||
|
CSHORT Type;
|
||||||
|
CSHORT Size;
|
||||||
|
UNICODE_STRING TargetName;
|
||||||
|
LARGE_INTEGER CreateTime;
|
||||||
|
} SYMLINK_OBJECT, *PSYMLINK_OBJECT;
|
||||||
|
|
||||||
|
|
||||||
typedef struct _TYPE_OBJECT
|
typedef struct _TYPE_OBJECT
|
||||||
{
|
{
|
||||||
CSHORT Type;
|
CSHORT Type;
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
/* $Id: symlink.c,v 1.5 2003/10/12 17:05:49 hbirr Exp $
|
/* $Id: symlink.c,v 1.6 2003/10/14 14:45:23 ekohl Exp $
|
||||||
*
|
*
|
||||||
* COPYRIGHT: See COPYING in the top level directory
|
* COPYRIGHT: See COPYING in the top level directory
|
||||||
* PROJECT: ReactOS kernel
|
* PROJECT: ReactOS kernel
|
||||||
|
@ -19,15 +19,8 @@
|
||||||
#define NDEBUG
|
#define NDEBUG
|
||||||
#include <internal/debug.h>
|
#include <internal/debug.h>
|
||||||
|
|
||||||
/* GLOBALS ******************************************************************/
|
|
||||||
|
|
||||||
typedef struct
|
/* GLOBALS ******************************************************************/
|
||||||
{
|
|
||||||
CSHORT Type;
|
|
||||||
CSHORT Size;
|
|
||||||
UNICODE_STRING TargetName;
|
|
||||||
OBJECT_ATTRIBUTES Target;
|
|
||||||
} SYMLNK_OBJECT, *PSYMLNK_OBJECT;
|
|
||||||
|
|
||||||
POBJECT_TYPE ObSymbolicLinkType = NULL;
|
POBJECT_TYPE ObSymbolicLinkType = NULL;
|
||||||
|
|
||||||
|
@ -40,8 +33,8 @@ static GENERIC_MAPPING ObpSymbolicLinkMapping = {
|
||||||
#define TAG_SYMLINK_TTARGET TAG('S', 'Y', 'T', 'T')
|
#define TAG_SYMLINK_TTARGET TAG('S', 'Y', 'T', 'T')
|
||||||
#define TAG_SYMLINK_TARGET TAG('S', 'Y', 'M', 'T')
|
#define TAG_SYMLINK_TARGET TAG('S', 'Y', 'M', 'T')
|
||||||
|
|
||||||
/* FUNCTIONS ****************************************************************/
|
|
||||||
|
|
||||||
|
/* FUNCTIONS ****************************************************************/
|
||||||
|
|
||||||
/**********************************************************************
|
/**********************************************************************
|
||||||
* NAME INTERNAL
|
* NAME INTERNAL
|
||||||
|
@ -82,7 +75,7 @@ ObpCreateSymbolicLink(PVOID Object,
|
||||||
VOID STDCALL
|
VOID STDCALL
|
||||||
ObpDeleteSymbolicLink(PVOID ObjectBody)
|
ObpDeleteSymbolicLink(PVOID ObjectBody)
|
||||||
{
|
{
|
||||||
PSYMLNK_OBJECT SymlinkObject = (PSYMLNK_OBJECT)ObjectBody;
|
PSYMLINK_OBJECT SymlinkObject = (PSYMLINK_OBJECT)ObjectBody;
|
||||||
|
|
||||||
RtlFreeUnicodeString(&SymlinkObject->TargetName);
|
RtlFreeUnicodeString(&SymlinkObject->TargetName);
|
||||||
}
|
}
|
||||||
|
@ -107,7 +100,7 @@ ObpParseSymbolicLink(PVOID Object,
|
||||||
PWSTR * RemainingPath,
|
PWSTR * RemainingPath,
|
||||||
ULONG Attributes)
|
ULONG Attributes)
|
||||||
{
|
{
|
||||||
PSYMLNK_OBJECT SymlinkObject = (PSYMLNK_OBJECT) Object;
|
PSYMLINK_OBJECT SymlinkObject = (PSYMLINK_OBJECT) Object;
|
||||||
UNICODE_STRING TargetPath;
|
UNICODE_STRING TargetPath;
|
||||||
|
|
||||||
DPRINT("ObpParseSymbolicLink (RemainingPath %S)\n", *RemainingPath);
|
DPRINT("ObpParseSymbolicLink (RemainingPath %S)\n", *RemainingPath);
|
||||||
|
@ -179,7 +172,7 @@ ObInitSymbolicLinkImplementation (VOID)
|
||||||
ObSymbolicLinkType->MaxObjects = ULONG_MAX;
|
ObSymbolicLinkType->MaxObjects = ULONG_MAX;
|
||||||
ObSymbolicLinkType->MaxHandles = ULONG_MAX;
|
ObSymbolicLinkType->MaxHandles = ULONG_MAX;
|
||||||
ObSymbolicLinkType->PagedPoolCharge = 0;
|
ObSymbolicLinkType->PagedPoolCharge = 0;
|
||||||
ObSymbolicLinkType->NonpagedPoolCharge = sizeof(SYMLNK_OBJECT);
|
ObSymbolicLinkType->NonpagedPoolCharge = sizeof(SYMLINK_OBJECT);
|
||||||
ObSymbolicLinkType->Mapping = &ObpSymbolicLinkMapping;
|
ObSymbolicLinkType->Mapping = &ObpSymbolicLinkMapping;
|
||||||
ObSymbolicLinkType->Dump = NULL;
|
ObSymbolicLinkType->Dump = NULL;
|
||||||
ObSymbolicLinkType->Open = NULL;
|
ObSymbolicLinkType->Open = NULL;
|
||||||
|
@ -218,7 +211,7 @@ NtCreateSymbolicLinkObject(OUT PHANDLE SymbolicLinkHandle,
|
||||||
IN POBJECT_ATTRIBUTES ObjectAttributes,
|
IN POBJECT_ATTRIBUTES ObjectAttributes,
|
||||||
IN PUNICODE_STRING DeviceName)
|
IN PUNICODE_STRING DeviceName)
|
||||||
{
|
{
|
||||||
PSYMLNK_OBJECT SymbolicLink;
|
PSYMLINK_OBJECT SymbolicLink;
|
||||||
NTSTATUS Status;
|
NTSTATUS Status;
|
||||||
|
|
||||||
assert_irql(PASSIVE_LEVEL);
|
assert_irql(PASSIVE_LEVEL);
|
||||||
|
@ -234,7 +227,7 @@ NtCreateSymbolicLinkObject(OUT PHANDLE SymbolicLinkHandle,
|
||||||
ObjectAttributes,
|
ObjectAttributes,
|
||||||
ExGetPreviousMode(),
|
ExGetPreviousMode(),
|
||||||
NULL,
|
NULL,
|
||||||
sizeof(SYMLNK_OBJECT),
|
sizeof(SYMLINK_OBJECT),
|
||||||
0,
|
0,
|
||||||
0,
|
0,
|
||||||
(PVOID*)&SymbolicLink);
|
(PVOID*)&SymbolicLink);
|
||||||
|
@ -267,11 +260,7 @@ NtCreateSymbolicLinkObject(OUT PHANDLE SymbolicLinkHandle,
|
||||||
|
|
||||||
DPRINT("DeviceName %S\n", SymbolicLink->TargetName.Buffer);
|
DPRINT("DeviceName %S\n", SymbolicLink->TargetName.Buffer);
|
||||||
|
|
||||||
InitializeObjectAttributes(&SymbolicLink->Target,
|
NtQuerySystemTime (&SymbolicLink->CreateTime);
|
||||||
&SymbolicLink->TargetName,
|
|
||||||
0,
|
|
||||||
NULL,
|
|
||||||
NULL);
|
|
||||||
|
|
||||||
DPRINT("%s() = STATUS_SUCCESS\n",__FUNCTION__);
|
DPRINT("%s() = STATUS_SUCCESS\n",__FUNCTION__);
|
||||||
ObDereferenceObject(SymbolicLink);
|
ObDereferenceObject(SymbolicLink);
|
||||||
|
@ -329,7 +318,7 @@ NtQuerySymbolicLinkObject(IN HANDLE LinkHandle,
|
||||||
IN OUT PUNICODE_STRING LinkTarget,
|
IN OUT PUNICODE_STRING LinkTarget,
|
||||||
OUT PULONG ReturnedLength OPTIONAL)
|
OUT PULONG ReturnedLength OPTIONAL)
|
||||||
{
|
{
|
||||||
PSYMLNK_OBJECT SymlinkObject;
|
PSYMLINK_OBJECT SymlinkObject;
|
||||||
NTSTATUS Status;
|
NTSTATUS Status;
|
||||||
|
|
||||||
Status = ObReferenceObjectByHandle(LinkHandle,
|
Status = ObReferenceObjectByHandle(LinkHandle,
|
||||||
|
|
Loading…
Reference in a new issue