/** @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
return EFI_SUCCESS;\r
}\r
\r
-STATIC\r
BOOLEAN\r
GopPrivateIsKeyRegistered (\r
IN EFI_KEY_DATA *RegsiteredData,\r
}\r
\r
\r
-STATIC\r
VOID\r
GopPrivateInvokeRegisteredFunction (\r
IN GOP_PRIVATE_DATA *Private,\r
} \r
}\r
\r
-STATIC\r
EFI_STATUS\r
GopPrivateUpdateStatusLight (\r
IN GOP_PRIVATE_DATA *Private\r
}\r
\r
\r
-STATIC\r
EFI_STATUS\r
GopPrivateResetWorker (\r
IN GOP_PRIVATE_DATA *Private\r
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
return EFI_SUCCESS;\r
}\r
\r
-STATIC\r
EFI_STATUS\r
GopPrivateReadKeyStrokeWorker (\r
IN GOP_PRIVATE_DATA *Private,\r
@return TODO: add return values\r
\r
**/\r
-STATIC\r
EFI_STATUS\r
EFIAPI\r
WinNtGopSimpleTextInReadKeyStroke (\r
@return TODO: add return values\r
\r
**/\r
-STATIC\r
VOID\r
EFIAPI\r
WinNtGopSimpleTextInWaitForKey (\r
// Simple Text Input Ex protocol functions\r
//\r
\r
-STATIC\r
EFI_STATUS\r
EFIAPI\r
WinNtGopSimpleTextInExResetEx (\r
return GopPrivateResetWorker (Private);\r
}\r
\r
-STATIC\r
EFI_STATUS\r
EFIAPI\r
WinNtGopSimpleTextInExReadKeyStrokeEx (\r
\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
\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
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
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
// 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
//\r
// Can not find the specified Notification Handle\r
//\r
- return EFI_NOT_FOUND;\r
+ return EFI_INVALID_PARAMETER;\r
}\r
\r
/**\r