- Fix some small formatting issues.
authorAlex Ionescu <aionescu@gmail.com>
Thu, 29 Dec 2005 18:47:14 +0000 (18:47 +0000)
committerAlex Ionescu <aionescu@gmail.com>
Thu, 29 Dec 2005 18:47:14 +0000 (18:47 +0000)
svn path=/trunk/; revision=20432

reactos/ntoskrnl/ex/event.c
reactos/ntoskrnl/ex/mutant.c
reactos/ntoskrnl/ex/sem.c

index 6c0f9d0..143df16 100644 (file)
@@ -153,11 +153,13 @@ NtCreateEvent(OUT PHANDLE EventHandle,
                                  &hEvent);
         ObDereferenceObject(Event);
 
-        /* Check for success and return handle */
+        /* Check for success */
         if(NT_SUCCESS(Status))
         {
+            /* Enter SEH for return */
             _SEH_TRY
             {
+                /* Return the handle to the caller */
                 *EventHandle = hEvent;
             }
             _SEH_EXCEPT(_SEH_ExSystemExceptionFilter)
@@ -320,14 +322,16 @@ NtQueryEvent(IN HANDLE EventHandle,
     PKEVENT Event;
     KPROCESSOR_MODE PreviousMode  = ExGetPreviousMode();
     NTSTATUS Status = STATUS_SUCCESS;
-    PEVENT_BASIC_INFORMATION BasicInfo = (PEVENT_BASIC_INFORMATION)EventInformation;
+    PEVENT_BASIC_INFORMATION BasicInfo =
+        (PEVENT_BASIC_INFORMATION)EventInformation;
     PAGED_CODE();
     DPRINT("NtQueryEvent(0x%p, 0x%x)\n", EventHandle, EventInformationClass);
 
     /* Check buffers and class validity */
     Status = DefaultQueryInfoBufferCheck(EventInformationClass,
                                          ExEventInfoClass,
-                                         sizeof(ExEventInfoClass) / sizeof(ExEventInfoClass[0]),
+                                         sizeof(ExEventInfoClass) /
+                                         sizeof(ExEventInfoClass[0]),
                                          EventInformation,
                                          EventInformationLength,
                                          ReturnLength,
index 32f77e9..a74e762 100644 (file)
@@ -1,12 +1,10 @@
 /*
  * COPYRIGHT:       See COPYING in the top level directory
- * PROJECT:         ReactOS kernel
+ * PROJECT:         ReactOS Kernel
  * FILE:            ntoskrnl/ex/mutant.c
  * PURPOSE:         Executive Management of Mutants
- *
- * PROGRAMMERS:     Alex Ionescu - Fix tab/space mismatching, tiny fixes to query function and
- *                                 add more debug output.
- *                  David Welch (welch@cwcom.net)
+ * PROGRAMMERS:     Alex Ionescu (alex@relsoft.net)
+ *                  Thomas Weidenmueller
  */
 
 /* INCLUDES *****************************************************************/
 #pragma alloc_text(INIT, ExpInitializeMutantImplementation)
 #endif
 
-#ifndef MUTANT_INCREMENT
-#define MUTANT_INCREMENT                1
-#endif
+/* DATA **********************************************************************/
 
 POBJECT_TYPE ExMutantObjectType = NULL;
 
-static GENERIC_MAPPING ExpMutantMapping = {
+GENERIC_MAPPING ExpMutantMapping =
+{
     STANDARD_RIGHTS_READ    | SYNCHRONIZE | MUTANT_QUERY_STATE,
     STANDARD_RIGHTS_WRITE   | SYNCHRONIZE,
     STANDARD_RIGHTS_EXECUTE | SYNCHRONIZE | MUTANT_QUERY_STATE,
-    MUTANT_ALL_ACCESS};
-
-static const INFORMATION_CLASS_INFO ExMutantInfoClass[] = {
+    MUTANT_ALL_ACCESS
+};
 
+static const INFORMATION_CLASS_INFO ExMutantInfoClass[] =
+{
      /* MutantBasicInformation */
-    ICI_SQ_SAME( sizeof(MUTANT_BASIC_INFORMATION), sizeof(ULONG), ICIF_QUERY ),
+    ICI_SQ_SAME( sizeof(MUTANT_BASIC_INFORMATION), sizeof(ULONG), ICIF_QUERY),
 };
 
 /* FUNCTIONS *****************************************************************/
 
 VOID
-STDCALL
+NTAPI
 ExpDeleteMutant(PVOID ObjectBody)
 {
-
     DPRINT("ExpDeleteMutant(ObjectBody 0x%p)\n", ObjectBody);
 
     /* Make sure to release the Mutant */
@@ -55,14 +52,13 @@ ExpDeleteMutant(PVOID ObjectBody)
 
 VOID
 INIT_FUNCTION
-STDCALL
+NTAPI
 ExpInitializeMutantImplementation(VOID)
 {
     OBJECT_TYPE_INITIALIZER ObjectTypeInitializer;
     UNICODE_STRING Name;
-
     DPRINT("Creating Mutant Object Type\n");
-  
+
     /* Create the Event Pair Object Type */
     RtlZeroMemory(&ObjectTypeInitializer, sizeof(ObjectTypeInitializer));
     RtlInitUnicodeString(&Name, L"Mutant");
@@ -79,7 +75,7 @@ ExpInitializeMutantImplementation(VOID)
  * @implemented
  */
 NTSTATUS
-STDCALL
+NTAPI
 NtCreateMutant(OUT PHANDLE MutantHandle,
                IN ACCESS_MASK DesiredAccess,
                IN POBJECT_ATTRIBUTES ObjectAttributes  OPTIONAL,
@@ -89,22 +85,26 @@ NtCreateMutant(OUT PHANDLE MutantHandle,
     HANDLE hMutant;
     PKMUTANT Mutant;
     NTSTATUS Status = STATUS_SUCCESS;
-
     PAGED_CODE();
-    DPRINT("NtCreateMutant(0x%p, 0x%x, 0x%p)\n", MutantHandle, DesiredAccess, ObjectAttributes);
-
-    /* Check Output Safety */
-    if(PreviousMode != KernelMode) {
-
-        _SEH_TRY {
-
+    DPRINT("NtCreateMutant(0x%p, 0x%x, 0x%p)\n",
+            MutantHandle, DesiredAccess, ObjectAttributes);
+
+    /* Check if we were called from user-mode */
+    if(PreviousMode != KernelMode)
+    {
+        /* Enter SEH Block */
+        _SEH_TRY
+        {
+            /* Check handle pointer */
             ProbeForWriteHandle(MutantHandle);
-        } _SEH_EXCEPT(_SEH_ExSystemExceptionFilter) {
-
+        }
+        _SEH_EXCEPT(_SEH_ExSystemExceptionFilter)
+        {
             Status = _SEH_GetExceptionCode();
+        }
+        _SEH_END;
 
-        } _SEH_END;
-
+        /* Bail out if pointer was invalid */
         if(!NT_SUCCESS(Status)) return Status;
     }
 
@@ -120,8 +120,8 @@ NtCreateMutant(OUT PHANDLE MutantHandle,
                             (PVOID*)&Mutant);
 
     /* Check for success */
-    if(NT_SUCCESS(Status)) {
-
+    if(NT_SUCCESS(Status))
+    {
         /* Initalize the Kernel Mutant */
         DPRINT("Initializing the Mutant\n");
         KeInitializeMutant(Mutant, InitialOwner);
@@ -135,18 +135,20 @@ NtCreateMutant(OUT PHANDLE MutantHandle,
                                 &hMutant);
         ObDereferenceObject(Mutant);
 
-        /* Check for success and return handle */
-        if(NT_SUCCESS(Status)) {
-
-            _SEH_TRY {
-
+        /* Check for success */
+        if(NT_SUCCESS(Status))
+        {
+            /* Enter SEH for return */
+            _SEH_TRY
+            {
+                /* Return the handle to the caller */
                 *MutantHandle = hMutant;
-
-            } _SEH_EXCEPT(_SEH_ExSystemExceptionFilter) {
-
+            }
+            _SEH_EXCEPT(_SEH_ExSystemExceptionFilter)
+            {
                 Status = _SEH_GetExceptionCode();
-
-            _SEH_END;
+            }
+            _SEH_END;
         }
     }
 
@@ -158,7 +160,7 @@ NtCreateMutant(OUT PHANDLE MutantHandle,
  * @implemented
  */
 NTSTATUS
-STDCALL
+NTAPI
 NtOpenMutant(OUT PHANDLE MutantHandle,
              IN ACCESS_MASK DesiredAccess,
              IN POBJECT_ATTRIBUTES ObjectAttributes)
@@ -166,22 +168,26 @@ NtOpenMutant(OUT PHANDLE MutantHandle,
     HANDLE hMutant;
     KPROCESSOR_MODE PreviousMode = ExGetPreviousMode();
     NTSTATUS Status = STATUS_SUCCESS;
-
     PAGED_CODE();
-    DPRINT("NtOpenMutant(0x%p, 0x%x, 0x%p)\n", MutantHandle, DesiredAccess, ObjectAttributes);
-
-    /* Check Output Safety */
-    if(PreviousMode != KernelMode) {
-
-        _SEH_TRY {
-
+    DPRINT("NtOpenMutant(0x%p, 0x%x, 0x%p)\n",
+            MutantHandle, DesiredAccess, ObjectAttributes);
+
+    /* Check if we were called from user-mode */
+    if(PreviousMode != KernelMode)
+    {
+        /* Enter SEH Block */
+        _SEH_TRY
+        {
+            /* Check handle pointer */
             ProbeForWriteHandle(MutantHandle);
-        } _SEH_EXCEPT(_SEH_ExSystemExceptionFilter) {
-
+        }
+        _SEH_EXCEPT(_SEH_ExSystemExceptionFilter)
+        {
             Status = _SEH_GetExceptionCode();
+        }
+        _SEH_END;
 
-        } _SEH_END;
-
+        /* Bail out if pointer was invalid */
         if(!NT_SUCCESS(Status)) return Status;
     }
 
@@ -194,18 +200,20 @@ NtOpenMutant(OUT PHANDLE MutantHandle,
                                 NULL,
                                 &hMutant);
 
-    /* Check for success and return handle */
-    if(NT_SUCCESS(Status)) {
-
-        _SEH_TRY {
-
+    /* Check for success */
+    if(NT_SUCCESS(Status))
+    {
+        /* Enter SEH for return */
+        _SEH_TRY
+        {
+            /* Return the handle to the caller */
             *MutantHandle = hMutant;
-
-        } _SEH_EXCEPT(_SEH_ExSystemExceptionFilter) {
-
+        }
+        _SEH_EXCEPT(_SEH_ExSystemExceptionFilter)
+        {
             Status = _SEH_GetExceptionCode();
-
-        _SEH_END;
+        }
+        _SEH_END;
     }
 
     /* Return Status */
@@ -216,7 +224,7 @@ NtOpenMutant(OUT PHANDLE MutantHandle,
  * @implemented
  */
 NTSTATUS
-STDCALL
+NTAPI
 NtQueryMutant(IN HANDLE MutantHandle,
               IN MUTANT_INFORMATION_CLASS MutantInformationClass,
               OUT PVOID MutantInformation,
@@ -226,20 +234,21 @@ NtQueryMutant(IN HANDLE MutantHandle,
     PKMUTANT Mutant;
     KPROCESSOR_MODE PreviousMode = ExGetPreviousMode();
     NTSTATUS Status = STATUS_SUCCESS;
-    PMUTANT_BASIC_INFORMATION BasicInfo = (PMUTANT_BASIC_INFORMATION)MutantInformation;
-
+    PMUTANT_BASIC_INFORMATION BasicInfo =
+        (PMUTANT_BASIC_INFORMATION)MutantInformation;
     PAGED_CODE();
 
     /* Check buffers and parameters */
     Status = DefaultQueryInfoBufferCheck(MutantInformationClass,
                                          ExMutantInfoClass,
-                                         sizeof(ExMutantInfoClass) / sizeof(ExMutantInfoClass[0]),
+                                         sizeof(ExMutantInfoClass) /
+                                         sizeof(ExMutantInfoClass[0]),
                                          MutantInformation,
                                          MutantInformationLength,
                                          ResultLength,
                                          PreviousMode);
-    if(!NT_SUCCESS(Status)) {
-
+    if(!NT_SUCCESS(Status))
+    {
         DPRINT("NtQueryMutant() failed, Status: 0x%x\n", Status);
         return Status;
     }
@@ -252,24 +261,26 @@ NtQueryMutant(IN HANDLE MutantHandle,
                                        (PVOID*)&Mutant,
                                        NULL);
     /* Check for Status */
-    if(NT_SUCCESS(Status)) {
-
-         _SEH_TRY {
-
+    if(NT_SUCCESS(Status))
+    {
+        /* Enter SEH Block for return */
+         _SEH_TRY
+         {
             /* Fill out the Basic Information Requested */
             DPRINT("Returning Mutant Information\n");
             BasicInfo->CurrentCount = KeReadStateMutant(Mutant);
-            BasicInfo->OwnedByCaller = (Mutant->OwnerThread == KeGetCurrentThread());
+            BasicInfo->OwnedByCaller = (Mutant->OwnerThread ==
+                                        KeGetCurrentThread());
             BasicInfo->AbandonedState = Mutant->Abandoned;
 
             /* Return the Result Length if requested */
            if(ResultLength) *ResultLength = sizeof(MUTANT_BASIC_INFORMATION);
-
-        } _SEH_EXCEPT(_SEH_ExSystemExceptionFilter) {
-
+        }
+        _SEH_EXCEPT(_SEH_ExSystemExceptionFilter)
+        {
             Status = _SEH_GetExceptionCode();
-
-        _SEH_END;
+        }
+        _SEH_END;
 
         /* Release the Object */
         ObDereferenceObject(Mutant);
@@ -279,39 +290,38 @@ NtQueryMutant(IN HANDLE MutantHandle,
     return Status;
 }
 
-
 /*
  * @implemented
  */
 NTSTATUS
-STDCALL
+NTAPI
 NtReleaseMutant(IN HANDLE MutantHandle,
-                IN PLONG PreviousCount  OPTIONAL)
+                IN PLONG PreviousCount OPTIONAL)
 {
     PKMUTANT Mutant;
-    KPROCESSOR_MODE PreviousMode;
+    KPROCESSOR_MODE PreviousMode = ExGetPreviousMode();
     NTSTATUS Status = STATUS_SUCCESS;
-
     PAGED_CODE();
-
-    PreviousMode = ExGetPreviousMode();
-
     DPRINT("NtReleaseMutant(MutantHandle 0x%p PreviousCount 0x%p)\n",
             MutantHandle,
             PreviousCount);
 
-    /* Check Output Safety */
-    if(PreviousMode != KernelMode && PreviousCount) {
-
-        _SEH_TRY {
-
+     /* Check if we were called from user-mode */
+    if((PreviousCount) && (PreviousMode != KernelMode))
+    {
+        /* Entry SEH Block */
+        _SEH_TRY
+        {
+            /* Make sure the state pointer is valid */
             ProbeForWriteLong(PreviousCount);
-        } _SEH_EXCEPT(_SEH_ExSystemExceptionFilter) {
-
+        }
+        _SEH_EXCEPT(_SEH_ExSystemExceptionFilter)
+        {
             Status = _SEH_GetExceptionCode();
+        }
+        _SEH_END;
 
-        } _SEH_END;
-
+        /* Bail out if pointer was invalid */
         if(!NT_SUCCESS(Status)) return Status;
     }
 
@@ -324,25 +334,30 @@ NtReleaseMutant(IN HANDLE MutantHandle,
                                        NULL);
 
     /* Check for Success and release if such */
-    if(NT_SUCCESS(Status)) {
-
-        /* release the mutant. doing so might raise an exception which we're
-           required to catch! */
-        _SEH_TRY {
-
-            LONG Prev = KeReleaseMutant(Mutant, MUTANT_INCREMENT, FALSE, FALSE);
-
-            if(PreviousCount) {
-
-                *PreviousCount = Prev;
-            }
-
-        } _SEH_EXCEPT(_SEH_ExSystemExceptionFilter) {
-
+    if(NT_SUCCESS(Status))
+    {
+        /*
+         * Release the mutant. doing so might raise an exception which we're
+         * required to catch!
+         */
+        _SEH_TRY
+        {
+            /* Release the mutant */
+            LONG Prev = KeReleaseMutant(Mutant,
+                                        MUTANT_INCREMENT,
+                                        FALSE,
+                                        FALSE);
+
+            /* Return the previous count if requested */
+            if(PreviousCount) *PreviousCount = Prev;
+        }
+        _SEH_EXCEPT(_SEH_ExSystemExceptionFilter)
+        {
             Status = _SEH_GetExceptionCode();
+        }
+        _SEH_END;
 
-        } _SEH_END;
-
+        /* Dereference it */
         ObDereferenceObject(Mutant);
     }
 
index 62a5523..11dcc29 100644 (file)
@@ -1,11 +1,10 @@
 /*
  * COPYRIGHT:       See COPYING in the top level directory
- * PROJECT:         ReactOS kernel
+ * PROJECT:         ReactOS Kernel
  * FILE:            ntoskrnl/ex/sem.c
  * PURPOSE:         Semaphore Implementation
- *
  * PROGRAMMERS:     Alex Ionescu (alex@relsoft.net)
- *                  David Welch (welch@mcmail.com)
+ *                  Thomas Weidenmueller
  */
 
 /* INCLUDES *****************************************************************/
@@ -22,7 +21,7 @@
 
 POBJECT_TYPE ExSemaphoreObjectType;
 
-static GENERIC_MAPPING ExSemaphoreMapping =
+GENERIC_MAPPING ExSemaphoreMapping =
 {
     STANDARD_RIGHTS_READ    | SEMAPHORE_QUERY_STATE,
     STANDARD_RIGHTS_WRITE   | SEMAPHORE_MODIFY_STATE,
@@ -33,19 +32,20 @@ static GENERIC_MAPPING ExSemaphoreMapping =
 static const INFORMATION_CLASS_INFO ExSemaphoreInfoClass[] =
 {
      /* SemaphoreBasicInformation */
-    ICI_SQ_SAME( sizeof(SEMAPHORE_BASIC_INFORMATION), sizeof(ULONG), ICIF_QUERY ),
+    ICI_SQ_SAME( sizeof(SEMAPHORE_BASIC_INFORMATION), sizeof(ULONG), ICIF_QUERY),
 };
 
+/* FUNCTIONS *****************************************************************/
+
 VOID
 INIT_FUNCTION
-STDCALL
+NTAPI
 ExpInitializeSemaphoreImplementation(VOID)
 {
     OBJECT_TYPE_INITIALIZER ObjectTypeInitializer;
     UNICODE_STRING Name;
-
     DPRINT("Creating Semaphore Object Type\n");
-  
+
     /* Create the Event Pair Object Type */
     RtlZeroMemory(&ObjectTypeInitializer, sizeof(ObjectTypeInitializer));
     RtlInitUnicodeString(&Name, L"Semaphore");
@@ -62,10 +62,10 @@ ExpInitializeSemaphoreImplementation(VOID)
  * @implemented
  */
 NTSTATUS
-STDCALL
+NTAPI
 NtCreateSemaphore(OUT PHANDLE SemaphoreHandle,
                   IN ACCESS_MASK DesiredAccess,
-                  IN POBJECT_ATTRIBUTES ObjectAttributes  OPTIONAL,
+                  IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL,
                   IN LONG InitialCount,
                   IN LONG MaximumCount)
 {
@@ -75,11 +75,13 @@ NtCreateSemaphore(OUT PHANDLE SemaphoreHandle,
     NTSTATUS Status = STATUS_SUCCESS;
     PAGED_CODE();
 
-    /* Check Output Safety */
+    /* Check if we were called from user-mode */
     if(PreviousMode != KernelMode)
     {
-        _SEH_TRY 
+        /* Enter SEH Block */
+        _SEH_TRY
         {
+            /* Check handle pointer */
             ProbeForWriteHandle(SemaphoreHandle);
         }
         _SEH_EXCEPT(_SEH_ExSystemExceptionFilter)
@@ -88,11 +90,14 @@ NtCreateSemaphore(OUT PHANDLE SemaphoreHandle,
         }
         _SEH_END;
 
+        /* Bail out if pointer was invalid */
         if(!NT_SUCCESS(Status)) return Status;
     }
 
     /* Make sure the counts make sense */
-    if (MaximumCount <= 0 || InitialCount < 0 || InitialCount > MaximumCount)
+    if ((MaximumCount <= 0) ||
+        (InitialCount < 0) ||
+        (InitialCount > MaximumCount))
     {
         DPRINT("Invalid Count Data!\n");
         return STATUS_INVALID_PARAMETER;
@@ -126,11 +131,13 @@ NtCreateSemaphore(OUT PHANDLE SemaphoreHandle,
                                 &hSemaphore);
         ObDereferenceObject(Semaphore);
 
-        /* Check for success and return handle */
+        /* Check for success */
         if(NT_SUCCESS(Status))
         {
+            /* Enter SEH Block for return */
             _SEH_TRY
             {
+                /* Return the handle */
                 *SemaphoreHandle = hSemaphore;
             }
             _SEH_EXCEPT(_SEH_ExSystemExceptionFilter)
@@ -149,7 +156,7 @@ NtCreateSemaphore(OUT PHANDLE SemaphoreHandle,
  * @implemented
  */
 NTSTATUS
-STDCALL
+NTAPI
 NtOpenSemaphore(OUT PHANDLE SemaphoreHandle,
                 IN ACCESS_MASK DesiredAccess,
                 IN POBJECT_ATTRIBUTES ObjectAttributes)
@@ -159,11 +166,13 @@ NtOpenSemaphore(OUT PHANDLE SemaphoreHandle,
     NTSTATUS Status = STATUS_SUCCESS;
     PAGED_CODE();
 
-    /* Check Output Safety */
+    /* Check if we were called from user-mode */
     if(PreviousMode != KernelMode)
     {
+        /* Enter SEH Block */
         _SEH_TRY
         {
+            /* Check handle pointer */
             ProbeForWriteHandle(SemaphoreHandle);
         }
         _SEH_EXCEPT(_SEH_ExSystemExceptionFilter)
@@ -172,6 +181,7 @@ NtOpenSemaphore(OUT PHANDLE SemaphoreHandle,
         }
         _SEH_END;
 
+        /* Bail out if pointer was invalid */
         if(!NT_SUCCESS(Status)) return Status;
     }
 
@@ -184,17 +194,20 @@ NtOpenSemaphore(OUT PHANDLE SemaphoreHandle,
                                 NULL,
                                 &hSemaphore);
 
-    /* Check for success and return handle */
+    /* Check for success */
     if(NT_SUCCESS(Status))
     {
+        /* Enter SEH Block for return */
         _SEH_TRY
         {
+            /* Return the handle */
             *SemaphoreHandle = hSemaphore;
         }
         _SEH_EXCEPT(_SEH_ExSystemExceptionFilter)
         {
             Status = _SEH_GetExceptionCode();
-        } _SEH_END;
+        }
+        _SEH_END;
     }
 
     /* Return Status */
@@ -205,7 +218,7 @@ NtOpenSemaphore(OUT PHANDLE SemaphoreHandle,
  * @implemented
  */
 NTSTATUS
-STDCALL
+NTAPI
 NtQuerySemaphore(IN HANDLE SemaphoreHandle,
                  IN SEMAPHORE_INFORMATION_CLASS SemaphoreInformationClass,
                  OUT PVOID SemaphoreInformation,
@@ -215,13 +228,13 @@ NtQuerySemaphore(IN HANDLE SemaphoreHandle,
     PKSEMAPHORE Semaphore;
     KPROCESSOR_MODE PreviousMode = ExGetPreviousMode();
     NTSTATUS Status = STATUS_SUCCESS;
-
     PAGED_CODE();
 
     /* Check buffers and class validity */
     Status = DefaultQueryInfoBufferCheck(SemaphoreInformationClass,
                                          ExSemaphoreInfoClass,
-                                         sizeof(ExSemaphoreInfoClass) / sizeof(ExSemaphoreInfoClass[0]),
+                                         sizeof(ExSemaphoreInfoClass) /
+                                         sizeof(ExSemaphoreInfoClass[0]),
                                          SemaphoreInformation,
                                          SemaphoreInformationLength,
                                          ReturnLength,
@@ -244,22 +257,24 @@ NtQuerySemaphore(IN HANDLE SemaphoreHandle,
     /* Check for success */
     if(NT_SUCCESS(Status))
     {
+        /* Entry SEH Block */
         _SEH_TRY
         {
-            PSEMAPHORE_BASIC_INFORMATION BasicInfo = (PSEMAPHORE_BASIC_INFORMATION)SemaphoreInformation;
+            PSEMAPHORE_BASIC_INFORMATION BasicInfo =
+                (PSEMAPHORE_BASIC_INFORMATION)SemaphoreInformation;
 
             /* Return the basic information */
             BasicInfo->CurrentCount = KeReadStateSemaphore(Semaphore);
             BasicInfo->MaximumCount = Semaphore->Limit;
 
-            /* Return length */
-            if(ReturnLength) *ReturnLength = sizeof(SEMAPHORE_BASIC_INFORMATION);
-
+            /* Return the length */
+            if(ReturnLength) *ReturnLength = sizeof(*BasicInfo);
         }
         _SEH_EXCEPT(_SEH_ExSystemExceptionFilter)
         {
             Status = _SEH_GetExceptionCode();
-        } _SEH_END;
+        }
+        _SEH_END;
 
         /* Dereference the Object */
         ObDereferenceObject(Semaphore);
@@ -273,22 +288,23 @@ NtQuerySemaphore(IN HANDLE SemaphoreHandle,
  * @implemented
  */
 NTSTATUS
-STDCALL
+NTAPI
 NtReleaseSemaphore(IN HANDLE SemaphoreHandle,
                    IN LONG ReleaseCount,
-                   OUT PLONG PreviousCount  OPTIONAL)
+                   OUT PLONG PreviousCount OPTIONAL)
 {
     KPROCESSOR_MODE PreviousMode = ExGetPreviousMode();
     PKSEMAPHORE Semaphore;
     NTSTATUS Status = STATUS_SUCCESS;
-
     PAGED_CODE();
 
-    /* Check buffer validity */
-    if(PreviousCount && PreviousMode != KernelMode)
+    /* Check if we were called from user-mode */
+    if((PreviousCount) && (PreviousMode != KernelMode))
     {
+        /* Entry SEH Block */
         _SEH_TRY
         {
+            /* Make sure the state pointer is valid */
             ProbeForWriteLong(PreviousCount);
          }
         _SEH_EXCEPT(_SEH_ExSystemExceptionFilter)
@@ -297,6 +313,7 @@ NtReleaseSemaphore(IN HANDLE SemaphoreHandle,
         }
         _SEH_END;
 
+        /* Bail out if pointer was invalid */
         if(!NT_SUCCESS(Status)) return Status;
     }
 
@@ -318,9 +335,10 @@ NtReleaseSemaphore(IN HANDLE SemaphoreHandle,
     /* Check for success */
     if (NT_SUCCESS(Status))
     {
-        /* Release the semaphore */
+        /* Enter SEH Block */
         _SEH_TRY
         {
+            /* Release the semaphore */
             LONG PrevCount = KeReleaseSemaphore(Semaphore,
                                                 IO_NO_INCREMENT,
                                                 ReleaseCount,
@@ -328,10 +346,7 @@ NtReleaseSemaphore(IN HANDLE SemaphoreHandle,
             ObDereferenceObject(Semaphore);
 
             /* Return the old count if requested */
-            if(PreviousCount)
-            {
-                *PreviousCount = PrevCount;
-            }
+            if(PreviousCount) *PreviousCount = PrevCount;
         }
         _SEH_EXCEPT(_SEH_ExSystemExceptionFilter)
         {