- Moved symbolic link object type.

- Added create time and removed object attributes.

svn path=/trunk/; revision=6310
This commit is contained in:
Eric Kohl 2003-10-14 14:45:23 +00:00
parent 6af69a6d26
commit 09bed329b8
2 changed files with 19 additions and 21 deletions

View file

@ -35,6 +35,15 @@ typedef struct _DIRECTORY_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
{
CSHORT Type;

View file

@ -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
* PROJECT: ReactOS kernel
@ -19,15 +19,8 @@
#define NDEBUG
#include <internal/debug.h>
/* GLOBALS ******************************************************************/
typedef struct
{
CSHORT Type;
CSHORT Size;
UNICODE_STRING TargetName;
OBJECT_ATTRIBUTES Target;
} SYMLNK_OBJECT, *PSYMLNK_OBJECT;
/* GLOBALS ******************************************************************/
POBJECT_TYPE ObSymbolicLinkType = NULL;
@ -40,8 +33,8 @@ static GENERIC_MAPPING ObpSymbolicLinkMapping = {
#define TAG_SYMLINK_TTARGET TAG('S', 'Y', 'T', 'T')
#define TAG_SYMLINK_TARGET TAG('S', 'Y', 'M', 'T')
/* FUNCTIONS ****************************************************************/
/* FUNCTIONS ****************************************************************/
/**********************************************************************
* NAME INTERNAL
@ -82,7 +75,7 @@ ObpCreateSymbolicLink(PVOID Object,
VOID STDCALL
ObpDeleteSymbolicLink(PVOID ObjectBody)
{
PSYMLNK_OBJECT SymlinkObject = (PSYMLNK_OBJECT)ObjectBody;
PSYMLINK_OBJECT SymlinkObject = (PSYMLINK_OBJECT)ObjectBody;
RtlFreeUnicodeString(&SymlinkObject->TargetName);
}
@ -107,7 +100,7 @@ ObpParseSymbolicLink(PVOID Object,
PWSTR * RemainingPath,
ULONG Attributes)
{
PSYMLNK_OBJECT SymlinkObject = (PSYMLNK_OBJECT) Object;
PSYMLINK_OBJECT SymlinkObject = (PSYMLINK_OBJECT) Object;
UNICODE_STRING TargetPath;
DPRINT("ObpParseSymbolicLink (RemainingPath %S)\n", *RemainingPath);
@ -179,7 +172,7 @@ ObInitSymbolicLinkImplementation (VOID)
ObSymbolicLinkType->MaxObjects = ULONG_MAX;
ObSymbolicLinkType->MaxHandles = ULONG_MAX;
ObSymbolicLinkType->PagedPoolCharge = 0;
ObSymbolicLinkType->NonpagedPoolCharge = sizeof(SYMLNK_OBJECT);
ObSymbolicLinkType->NonpagedPoolCharge = sizeof(SYMLINK_OBJECT);
ObSymbolicLinkType->Mapping = &ObpSymbolicLinkMapping;
ObSymbolicLinkType->Dump = NULL;
ObSymbolicLinkType->Open = NULL;
@ -218,7 +211,7 @@ NtCreateSymbolicLinkObject(OUT PHANDLE SymbolicLinkHandle,
IN POBJECT_ATTRIBUTES ObjectAttributes,
IN PUNICODE_STRING DeviceName)
{
PSYMLNK_OBJECT SymbolicLink;
PSYMLINK_OBJECT SymbolicLink;
NTSTATUS Status;
assert_irql(PASSIVE_LEVEL);
@ -234,7 +227,7 @@ NtCreateSymbolicLinkObject(OUT PHANDLE SymbolicLinkHandle,
ObjectAttributes,
ExGetPreviousMode(),
NULL,
sizeof(SYMLNK_OBJECT),
sizeof(SYMLINK_OBJECT),
0,
0,
(PVOID*)&SymbolicLink);
@ -267,11 +260,7 @@ NtCreateSymbolicLinkObject(OUT PHANDLE SymbolicLinkHandle,
DPRINT("DeviceName %S\n", SymbolicLink->TargetName.Buffer);
InitializeObjectAttributes(&SymbolicLink->Target,
&SymbolicLink->TargetName,
0,
NULL,
NULL);
NtQuerySystemTime (&SymbolicLink->CreateTime);
DPRINT("%s() = STATUS_SUCCESS\n",__FUNCTION__);
ObDereferenceObject(SymbolicLink);
@ -329,7 +318,7 @@ NtQuerySymbolicLinkObject(IN HANDLE LinkHandle,
IN OUT PUNICODE_STRING LinkTarget,
OUT PULONG ReturnedLength OPTIONAL)
{
PSYMLNK_OBJECT SymlinkObject;
PSYMLINK_OBJECT SymlinkObject;
NTSTATUS Status;
Status = ObReferenceObjectByHandle(LinkHandle,