some __stdcall fixes in ntoskrnl and ntdll
[reactos.git] / reactos / ntoskrnl / io / symlink.c
index f796ed8..8204acd 100644 (file)
@@ -1,4 +1,5 @@
-/*
+/* $Id: symlink.c,v 1.9 1999/08/29 06:59:08 ea Exp $
+ *
  * COPYRIGHT:       See COPYING in the top level directory
  * PROJECT:         ReactOS kernel
  * FILE:            ntoskrnl/io/symlink.c
 
 /* GLOBALS ******************************************************************/
 
-typedef struct
+typedef
+struct
 {
-   CSHORT Type;
-   CSHORT Size;
-   UNICODE_STRING TargetName;
-   OBJECT_ATTRIBUTES Target;
+       CSHORT                  Type;
+       CSHORT                  Size;
+       UNICODE_STRING          TargetName;
+       OBJECT_ATTRIBUTES       Target;
+       
 } SYMLNK_OBJECT, *PSYMLNK_OBJECT;
 
-POBJECT_TYPE IoSymbolicLinkType = NULL;
+
+POBJECT_TYPE
+IoSymbolicLinkType = NULL;
 
 /* FUNCTIONS *****************************************************************/
 
-NTSTATUS IopCreateSymbolicLink(PVOID Object,
-                              PVOID Parent,
-                              PWSTR RemainingPath,
-                              POBJECT_ATTRIBUTES ObjectAttributes)
+
+/**********************************************************************
+ * NAME                                                        INTERNAL
+ *     IopCreateSymbolicLink
+ *
+ * DESCRIPTION
+ *
+ * ARGUMENTS
+ *
+ * RETURNN VALUE
+ *     Status.
+ *
+ * REVISIONS
+ */
+NTSTATUS
+IopCreateSymbolicLink (
+       PVOID                   Object,
+       PVOID                   Parent,
+       PWSTR                   RemainingPath,
+       POBJECT_ATTRIBUTES      ObjectAttributes
+       )
 {
-   if (Parent != NULL && RemainingPath != NULL)
-     {
-       ObAddEntryDirectory(Parent, Object, RemainingPath+1);
-     }
-   return(STATUS_SUCCESS);
+       if (    (Parent != NULL)
+               && (RemainingPath != NULL)
+               )
+       {
+               ObAddEntryDirectory(
+                       Parent,
+                       Object,
+                       RemainingPath + 1
+                       );
+       }
+       return STATUS_SUCCESS;
 }
 
-PVOID IopParseSymbolicLink(PVOID Object,
-                          PWSTR* RemainingPath)
+
+/**********************************************************************
+ * NAME                                                        INTERNAL
+ *     IopParseSymbolicLink
+ *
+ * DESCRIPTION
+ *
+ * ARGUMENTS
+ *
+ * RETURNN VALUE
+ *
+ * REVISIONS
+ */
+PVOID
+IopParseSymbolicLink (
+       PVOID   Object,
+       PWSTR   * RemainingPath
+       )
 {
-   NTSTATUS Status;
-   PSYMLNK_OBJECT SymlinkObject = (PSYMLNK_OBJECT)Object;
-   PVOID ReturnedObject;
+       NTSTATUS        Status;
+       PSYMLNK_OBJECT  SymlinkObject = (PSYMLNK_OBJECT) Object;
+       PVOID           ReturnedObject;
    
-   Status = ObReferenceObjectByName(SymlinkObject->Target.ObjectName,
-                                   0,
-                                   NULL,
-                                   STANDARD_RIGHTS_REQUIRED,
-                                   NULL,
-                                   UserMode,
-                                   NULL,
-                                   &ReturnedObject);
-   if (NT_SUCCESS(Status))
-     {
-       return(ReturnedObject);
-     }
-   return(NULL);
+       Status = ObReferenceObjectByName(
+                       SymlinkObject->Target.ObjectName,
+                       0,
+                       NULL,
+                       STANDARD_RIGHTS_REQUIRED,
+                       NULL,
+                       UserMode,
+                       NULL,
+                       & ReturnedObject
+                       );
+       if (NT_SUCCESS(Status))
+       {
+               return ReturnedObject;
+       }
+       return NULL;
 }
 
-VOID IoInitSymbolicLinkImplementation(VOID)
+
+/**********************************************************************
+ * NAME                                                        INTERNAL
+ *     IoInitSymbolicLinkImplementation
+ *
+ * DESCRIPTION
+ *
+ * ARGUMENTS
+ *     None.
+ *
+ * RETURNN VALUE
+ *     None.
+ *
+ * REVISIONS
+ */
+VOID
+IoInitSymbolicLinkImplementation (VOID)
 {
-   ANSI_STRING AnsiString;
+       ANSI_STRING AnsiString;
    
-   IoSymbolicLinkType = ExAllocatePool(NonPagedPool,sizeof(OBJECT_TYPE));
+       IoSymbolicLinkType = ExAllocatePool(
+                               NonPagedPool,
+                               sizeof (OBJECT_TYPE)
+                               );
    
-   IoSymbolicLinkType->TotalObjects = 0;
-   IoSymbolicLinkType->TotalHandles = 0;
-   IoSymbolicLinkType->MaxObjects = ULONG_MAX;
-   IoSymbolicLinkType->MaxHandles = ULONG_MAX;
-   IoSymbolicLinkType->PagedPoolCharge = 0;
-   IoSymbolicLinkType->NonpagedPoolCharge = sizeof(SYMLNK_OBJECT);
-   IoSymbolicLinkType->Dump = NULL;
-   IoSymbolicLinkType->Open = NULL;
-   IoSymbolicLinkType->Close = NULL;
-   IoSymbolicLinkType->Delete = NULL;
-   IoSymbolicLinkType->Parse = IopParseSymbolicLink;
-   IoSymbolicLinkType->Security = NULL;
-   IoSymbolicLinkType->QueryName = NULL;
-   IoSymbolicLinkType->OkayToClose = NULL;
-   IoSymbolicLinkType->Create = IopCreateSymbolicLink;
+       IoSymbolicLinkType->TotalObjects = 0;
+       IoSymbolicLinkType->TotalHandles = 0;
+       IoSymbolicLinkType->MaxObjects = ULONG_MAX;
+       IoSymbolicLinkType->MaxHandles = ULONG_MAX;
+       IoSymbolicLinkType->PagedPoolCharge = 0;
+       IoSymbolicLinkType->NonpagedPoolCharge = sizeof (SYMLNK_OBJECT);
+       IoSymbolicLinkType->Dump = NULL;
+       IoSymbolicLinkType->Open = NULL;
+       IoSymbolicLinkType->Close = NULL;
+       IoSymbolicLinkType->Delete = NULL;
+       IoSymbolicLinkType->Parse = IopParseSymbolicLink;
+       IoSymbolicLinkType->Security = NULL;
+       IoSymbolicLinkType->QueryName = NULL;
+       IoSymbolicLinkType->OkayToClose = NULL;
+       IoSymbolicLinkType->Create = IopCreateSymbolicLink;
    
-   RtlInitAnsiString(&AnsiString,"Symbolic Link");
-   RtlAnsiStringToUnicodeString(&IoSymbolicLinkType->TypeName,
-                               &AnsiString,TRUE);
+       RtlInitAnsiString(
+               & AnsiString,
+               "Symbolic Link"
+               );
+       RtlAnsiStringToUnicodeString(
+               & IoSymbolicLinkType->TypeName,
+               & AnsiString,
+               TRUE
+               );
 }
 
 
+/**********************************************************************
+ * NAME                                                        EXPORTED
+ *     NtOpenSymbolicLinkObject
+ *
+ * DESCRIPTION
+ *
+ * ARGUMENTS
+ *
+ * RETURN VALUE
+ *
+ * REVISIONS
+ *
+ */
 NTSTATUS
+STDCALL
 NtOpenSymbolicLinkObject (
        OUT     PHANDLE                 LinkHandle,
        IN      ACCESS_MASK             DesiredAccess,
        IN      POBJECT_ATTRIBUTES      ObjectAttributes
        )
 {
-   NTSTATUS Status;
-   PVOID Object;
-
-   Status = ObReferenceObjectByName(ObjectAttributes->ObjectName,
-                                   ObjectAttributes->Attributes,
-                                   NULL,
-                                   DesiredAccess,
-                                   NULL,
-                                   UserMode,
-                                   NULL,
-                                   &Object);
-   if (!NT_SUCCESS(Status))
-     {
-       return(Status);
-     }
+       NTSTATUS        Status;
+       PVOID           Object;
+
+       Status = ObReferenceObjectByName(
+                       ObjectAttributes->ObjectName,
+                       ObjectAttributes->Attributes,
+                       NULL,
+                       DesiredAccess,
+                       NULL,
+                       UserMode,
+                       NULL,
+                       & Object
+                       );
+       if (!NT_SUCCESS(Status))
+       {
+               return Status;
+       }
    
-   Status = ObCreateHandle(PsGetCurrentProcess(),
-                          Object,
-                          DesiredAccess,
-                          FALSE,
-                          LinkHandle);
-   if (!NT_SUCCESS(Status))
-     {
-       return(Status);
-     }
+       Status = ObCreateHandle(
+                       PsGetCurrentProcess(),
+                       Object,
+                       DesiredAccess,
+                       FALSE,
+                       LinkHandle
+                       );
+       if (!NT_SUCCESS(Status))
+       {
+               return Status;
+       }
    
-   return(STATUS_SUCCESS);
+       return STATUS_SUCCESS;
 }
 
 
+/**********************************************************************
+ * NAME                                                        EXPORTED
+ *     NtQuerySymbolicLinkObject
+ *
+ * DESCRIPTION
+ *
+ * ARGUMENTS
+ *
+ * RETURN VALUE
+ *
+ * REVISIONS
+ *
+ */
 NTSTATUS
+STDCALL
 NtQuerySymbolicLinkObject (
        IN      HANDLE          LinkHandle,
        IN OUT  PUNICODE_STRING LinkTarget,
        OUT     PULONG          ReturnedLength  OPTIONAL
        )
 {
-   PSYMLNK_OBJECT SymlinkObject;
-   NTSTATUS Status;
+       PSYMLNK_OBJECT  SymlinkObject;
+       NTSTATUS        Status;
    
-   Status = ObReferenceObjectByHandle(LinkHandle,
-                                     SYMBOLIC_LINK_QUERY,
-                                     IoSymbolicLinkType,
-                                     UserMode,
-                                     (PVOID*)&SymlinkObject,
-                                     NULL);
-   if (Status != STATUS_SUCCESS)
-     {
-       return(Status);
-     }
+       Status = ObReferenceObjectByHandle(
+                       LinkHandle,
+                       SYMBOLIC_LINK_QUERY,
+                       IoSymbolicLinkType,
+                       UserMode,
+                       (PVOID *) & SymlinkObject,
+                       NULL
+                       );
+       if (Status != STATUS_SUCCESS)
+       {
+               return Status;
+       }
    
-   RtlCopyUnicodeString(LinkTarget,SymlinkObject->Target.ObjectName);
-   if (ReturnedLength!=NULL)
-     {
-       *ReturnedLength=SymlinkObject->Target.Length;
-     }
-   ObDereferenceObject(SymlinkObject);
-   return(STATUS_SUCCESS);
+       RtlCopyUnicodeString(
+               LinkTarget,
+               SymlinkObject->Target.ObjectName
+               );
+       if (ReturnedLength != NULL)
+       {
+               *ReturnedLength = SymlinkObject->Target.Length;
+       }
+       ObDereferenceObject(SymlinkObject);
+       
+       return STATUS_SUCCESS;
 }
 
-NTSTATUS IoCreateUnprotectedSymbolicLink(PUNICODE_STRING SymbolicLinkName,
-                                        PUNICODE_STRING DeviceName)
+
+/**********************************************************************
+ * NAME                                                        EXPORTED
+ *     IoCreateUnprotectedSymbolicLink
+ *
+ * DESCRIPTION
+ *
+ * ARGUMENTS
+ *
+ * RETURN VALUE
+ *
+ * REVISIONS
+ *
+ */
+NTSTATUS
+STDCALL
+IoCreateUnprotectedSymbolicLink (
+       PUNICODE_STRING SymbolicLinkName,
+       PUNICODE_STRING DeviceName
+       )
 {
-   return(IoCreateSymbolicLink(SymbolicLinkName,DeviceName));
+       return IoCreateSymbolicLink(
+                       SymbolicLinkName,
+                       DeviceName
+                       );
 }
 
-NTSTATUS IoCreateSymbolicLink(PUNICODE_STRING SymbolicLinkName,
-                             PUNICODE_STRING DeviceName)
+
+/**********************************************************************
+ * NAME                                                        EXPORTED
+ *     IoCreateSymbolicLink
+ *
+ * DESCRIPTION
+ *
+ * ARGUMENTS
+ *
+ * RETURN VALUE
+ *
+ * REVISIONS
+ *
+ */
+NTSTATUS
+STDCALL
+IoCreateSymbolicLink (
+       PUNICODE_STRING SymbolicLinkName,
+       PUNICODE_STRING DeviceName
+       )
 {
-   OBJECT_ATTRIBUTES ObjectAttributes;
-   HANDLE SymbolicLinkHandle;
-   PSYMLNK_OBJECT SymbolicLink;
+       OBJECT_ATTRIBUTES       ObjectAttributes;
+       HANDLE                  SymbolicLinkHandle;
+       PSYMLNK_OBJECT          SymbolicLink;
    
-   assert_irql(PASSIVE_LEVEL);
+       assert_irql(PASSIVE_LEVEL);
    
-   DPRINT("IoCreateSymbolicLink(SymbolicLinkName %w, DeviceName %w)\n",
-         SymbolicLinkName->Buffer,DeviceName->Buffer);
+       DPRINT(
+               "IoCreateSymbolicLink(SymbolicLinkName %w, DeviceName %w)\n",
+               SymbolicLinkName->Buffer,
+               DeviceName->Buffer
+               );
    
-   InitializeObjectAttributes(&ObjectAttributes,SymbolicLinkName,0,NULL,NULL);
-   SymbolicLink = ObCreateObject(&SymbolicLinkHandle,
-                                SYMBOLIC_LINK_ALL_ACCESS,
-                                &ObjectAttributes,
-                                IoSymbolicLinkType);
-   if (SymbolicLink == NULL)
-     {
-       return(STATUS_UNSUCCESSFUL);
-     }
+       InitializeObjectAttributes(
+               & ObjectAttributes,
+               SymbolicLinkName,
+               0,
+               NULL,
+               NULL
+               );
+       SymbolicLink = ObCreateObject(
+                       & SymbolicLinkHandle,
+                       SYMBOLIC_LINK_ALL_ACCESS,
+                       & ObjectAttributes,
+                       IoSymbolicLinkType
+                       );
+       if (SymbolicLink == NULL)
+       {
+               return STATUS_UNSUCCESSFUL;
+       }
    
-   ZwClose(SymbolicLinkHandle);
-   SymbolicLink->TargetName.Length = 0;
-   SymbolicLink->TargetName.MaximumLength = 
-     ((wcslen(DeviceName->Buffer) + 1) * sizeof(WCHAR));
-   SymbolicLink->TargetName.Buffer = ExAllocatePool(NonPagedPool,
-                                      SymbolicLink->TargetName.MaximumLength);
-   RtlCopyUnicodeString(&(SymbolicLink->TargetName), DeviceName);
-   DPRINT("DeviceName %w\n", SymbolicLink->TargetName.Buffer);
-   InitializeObjectAttributes(&(SymbolicLink->Target),
-                             &(SymbolicLink->TargetName),0,NULL,NULL);
-   DPRINT("%s() = STATUS_SUCCESS\n",__FUNCTION__);
-   return(STATUS_SUCCESS);
+       ZwClose(SymbolicLinkHandle);
+       
+       SymbolicLink->TargetName.Length = 0;
+       SymbolicLink->TargetName.MaximumLength = 
+               ((wcslen(DeviceName->Buffer) + 1) * sizeof(WCHAR));
+       SymbolicLink->TargetName.Buffer =
+               ExAllocatePool(
+                       NonPagedPool,
+                        SymbolicLink->TargetName.MaximumLength
+                       );
+       RtlCopyUnicodeString(
+               & (SymbolicLink->TargetName),
+               DeviceName
+               );
+       
+       DPRINT("DeviceName %w\n", SymbolicLink->TargetName.Buffer);
+       
+       InitializeObjectAttributes(
+               & (SymbolicLink->Target),
+               & (SymbolicLink->TargetName),
+               0,
+               NULL,
+               NULL
+               );
+       
+       DPRINT("%s() = STATUS_SUCCESS\n",__FUNCTION__);
+
+       return STATUS_SUCCESS;
 }
 
 
+/**********************************************************************
+ * NAME                                                        EXPORTED
+ *     IoDeleteSymbolicLink
+ *
+ * DESCRIPTION
+ *
+ * ARGUMENTS
+ *
+ * RETURN VALUE
+ *
+ * REVISIONS
+ *
+ */
 NTSTATUS
-IoDeleteSymbolicLink(PUNICODE_STRING DeviceName)
+STDCALL
+IoDeleteSymbolicLink (
+       PUNICODE_STRING DeviceName
+       )
 {
        UNIMPLEMENTED;
 }
 
 
+/**********************************************************************
+ * NAME                                                (EXPORTED as Zw)
+ *     NtCreateSymbolicLinkObject
+ *
+ * DESCRIPTION
+ *
+ * ARGUMENTS
+ *
+ * RETURN VALUE
+ *
+ * REVISIONS
+ *
+ */
 NTSTATUS
 STDCALL
 NtCreateSymbolicLinkObject (
@@ -222,3 +426,5 @@ NtCreateSymbolicLinkObject (
        UNIMPLEMENTED;
 }
 
+
+/* EOF */