]> git.proxmox.com Git - mirror_edk2.git/blobdiff - Nt32Pkg/WinNtGopDxe/WinNtGopInput.c
1) Call ProcessNotifyList() to process all Dispatch Notifications after the Memory...
[mirror_edk2.git] / Nt32Pkg / WinNtGopDxe / WinNtGopInput.c
index 0ea802355d29de52f378951815b2167f72eda1ea..6554fa476d76b5fdc5f6294c0c25081db16f81f4 100644 (file)
@@ -1,7 +1,7 @@
 /** @file\r
 \r
-Copyright (c) 2006, Intel Corporation\r
-All rights reserved. This program and the accompanying materials\r
+Copyright (c) 2006, Intel Corporation. All rights reserved.<BR>\r
+This program and the accompanying materials\r
 are licensed and made available under the terms and conditions of the BSD License\r
 which accompanies this distribution.  The full text of the license may be found at\r
 http://opensource.org/licenses/bsd-license.php\r
@@ -158,7 +158,6 @@ GopPrivateCheckQ (
   return EFI_SUCCESS;\r
 }\r
 \r
-STATIC\r
 BOOLEAN\r
 GopPrivateIsKeyRegistered (\r
   IN EFI_KEY_DATA  *RegsiteredData,\r
@@ -205,7 +204,6 @@ Returns:
 }\r
 \r
 \r
-STATIC\r
 VOID\r
 GopPrivateInvokeRegisteredFunction (\r
   IN GOP_PRIVATE_DATA                     *Private,\r
@@ -245,7 +243,6 @@ Returns:
   }    \r
 }\r
 \r
-STATIC\r
 EFI_STATUS\r
 GopPrivateUpdateStatusLight (\r
   IN GOP_PRIVATE_DATA                     *Private\r
@@ -277,7 +274,6 @@ Returns:
 }\r
 \r
 \r
-STATIC\r
 EFI_STATUS\r
 GopPrivateResetWorker (\r
   IN GOP_PRIVATE_DATA                     *Private\r
@@ -326,7 +322,7 @@ Returns:
   Private->CapsLock                = FALSE;\r
   Private->NumLock                 = FALSE;\r
   Private->ScrollLock              = FALSE;\r
-  \r
\r
   Private->KeyState.KeyShiftState  = EFI_SHIFT_STATE_VALID;\r
   Private->KeyState.KeyToggleState = EFI_TOGGLE_STATE_VALID;\r
 \r
@@ -338,7 +334,6 @@ Returns:
   return EFI_SUCCESS;\r
 }\r
 \r
-STATIC\r
 EFI_STATUS\r
 GopPrivateReadKeyStrokeWorker (\r
   IN GOP_PRIVATE_DATA                   *Private,\r
@@ -491,7 +486,6 @@ WinNtGopSimpleTextInReset (
   @return TODO: add return values\r
 \r
 **/\r
-STATIC\r
 EFI_STATUS\r
 EFIAPI\r
 WinNtGopSimpleTextInReadKeyStroke (\r
@@ -525,7 +519,6 @@ WinNtGopSimpleTextInReadKeyStroke (
   @return TODO: add return values\r
 \r
 **/\r
-STATIC\r
 VOID\r
 EFIAPI\r
 WinNtGopSimpleTextInWaitForKey (\r
@@ -570,7 +563,6 @@ WinNtGopSimpleTextInWaitForKey (
 // Simple Text Input Ex protocol functions\r
 //\r
 \r
-STATIC\r
 EFI_STATUS\r
 EFIAPI\r
 WinNtGopSimpleTextInExResetEx (\r
@@ -598,7 +590,6 @@ WinNtGopSimpleTextInExResetEx (
   return GopPrivateResetWorker (Private);\r
 }\r
 \r
-STATIC\r
 EFI_STATUS\r
 EFIAPI\r
 WinNtGopSimpleTextInExReadKeyStrokeEx (\r
@@ -728,15 +719,14 @@ WinNtGopSimpleTextInExRegisterKeyNotify (
                               \r
 --*/   \r
 {\r
-  EFI_STATUS                         Status;\r
   GOP_PRIVATE_DATA                   *Private;\r
   WIN_NT_GOP_SIMPLE_TEXTIN_EX_NOTIFY *CurrentNotify;\r
   LIST_ENTRY                         *Link;\r
   WIN_NT_GOP_SIMPLE_TEXTIN_EX_NOTIFY *NewNotify;      \r
 \r
-  if (KeyData == NULL || NotifyHandle == NULL) {\r
+  if (KeyData == NULL || KeyNotificationFunction == NULL || NotifyHandle == NULL) {\r
     return EFI_INVALID_PARAMETER;\r
-  }  \r
+  }\r
 \r
   Private = GOP_PRIVATE_DATA_FROM_TEXT_IN_EX_THIS (This);\r
 \r
@@ -768,20 +758,10 @@ WinNtGopSimpleTextInExRegisterKeyNotify (
 \r
   NewNotify->Signature         = WIN_NT_GOP_SIMPLE_TEXTIN_EX_NOTIFY_SIGNATURE;     \r
   NewNotify->KeyNotificationFn = KeyNotificationFunction;\r
+  NewNotify->NotifyHandle      = (EFI_HANDLE) NewNotify;\r
   CopyMem (&NewNotify->KeyData, KeyData, sizeof (KeyData));\r
   InsertTailList (&Private->NotifyList, &NewNotify->NotifyEntry);\r
 \r
-  //\r
-  // Use gSimpleTextInExNotifyGuid to get a valid EFI_HANDLE\r
-  //  \r
-  Status = gBS->InstallMultipleProtocolInterfaces (\r
-                  &NewNotify->NotifyHandle,\r
-                  &gSimpleTextInExNotifyGuid,\r
-                  NULL,\r
-                  NULL\r
-                  );\r
-  ASSERT_EFI_ERROR (Status);\r
-  \r
   *NotifyHandle = NewNotify->NotifyHandle;  \r
   \r
   return EFI_SUCCESS;\r
@@ -806,11 +786,9 @@ WinNtGopSimpleTextInExUnregisterKeyNotify (
   Returns:\r
     EFI_SUCCESS             - The notification function was unregistered successfully.\r
     EFI_INVALID_PARAMETER   - The NotificationHandle is invalid.\r
-    EFI_NOT_FOUND           - Can not find the matching entry in database.  \r
                               \r
 --*/   \r
 {\r
-  EFI_STATUS                         Status;\r
   GOP_PRIVATE_DATA                   *Private;\r
   LIST_ENTRY                         *Link;\r
   WIN_NT_GOP_SIMPLE_TEXTIN_EX_NOTIFY *CurrentNotify;\r
@@ -818,18 +796,10 @@ WinNtGopSimpleTextInExUnregisterKeyNotify (
   if (NotificationHandle == NULL) {\r
     return EFI_INVALID_PARAMETER;\r
   } \r
-  \r
-  Status = gBS->OpenProtocol (\r
-                  NotificationHandle,\r
-                  &gSimpleTextInExNotifyGuid,\r
-                  NULL,\r
-                  NULL,\r
-                  NULL,\r
-                  EFI_OPEN_PROTOCOL_TEST_PROTOCOL\r
-                  );\r
-  if (EFI_ERROR (Status)) {\r
+\r
+  if (((WIN_NT_GOP_SIMPLE_TEXTIN_EX_NOTIFY *) NotificationHandle)->Signature != WIN_NT_GOP_SIMPLE_TEXTIN_EX_NOTIFY_SIGNATURE) {\r
     return EFI_INVALID_PARAMETER;\r
-  }\r
+  } \r
 \r
   Private = GOP_PRIVATE_DATA_FROM_TEXT_IN_EX_THIS (This);\r
 \r
@@ -845,13 +815,7 @@ WinNtGopSimpleTextInExUnregisterKeyNotify (
       // Remove the notification function from NotifyList and free resources\r
       //\r
       RemoveEntryList (&CurrentNotify->NotifyEntry);      \r
-      Status = gBS->UninstallMultipleProtocolInterfaces (\r
-                      CurrentNotify->NotifyHandle,\r
-                      &gSimpleTextInExNotifyGuid,\r
-                      NULL,\r
-                      NULL\r
-                      );\r
-      ASSERT_EFI_ERROR (Status);\r
+\r
       gBS->FreePool (CurrentNotify);            \r
       return EFI_SUCCESS;\r
     }\r
@@ -860,7 +824,7 @@ WinNtGopSimpleTextInExUnregisterKeyNotify (
   //\r
   // Can not find the specified Notification Handle\r
   //\r
-  return EFI_NOT_FOUND;\r
+  return EFI_INVALID_PARAMETER;\r
 }\r
 \r
 /**\r