-/*++\r
+/**@file\r
\r
-Copyright (c) 2006 - 2007, Intel Corporation\r
-All rights reserved. This program and the accompanying materials\r
+Copyright (c) 2006 - 2011, 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
\r
Abstract:\r
\r
---*/\r
+**/\r
#include <Uefi.h>\r
#include <WinNtDxe.h>\r
#include <Protocol/BlockIo.h>\r
SupportedLanguages += 3;\r
} else {\r
for (Index = 0; SupportedLanguages[Index] != 0 && SupportedLanguages[Index] != ';'; Index++);\r
- if (AsciiStrnCmp(SupportedLanguages, Language, Index) == 0) {\r
+ if ((AsciiStrnCmp(SupportedLanguages, Language, Index) == 0) && (Language[Index] == 0)) {\r
Found = TRUE;\r
break;\r
}\r
if (DiagnosticType != EfiDriverDiagnosticTypeStandard) {\r
*ErrorType = &gEfiBlockIoProtocolGuid;\r
*BufferSize = 0x60;\r
- Buffer = AllocatePool ((UINTN) (*BufferSize));\r
+ *Buffer = AllocatePool ((UINTN) (*BufferSize));\r
CopyMem (*Buffer, L"Windows Block I/O Driver Diagnostics Failed\n", *BufferSize);\r
return EFI_DEVICE_ERROR;\r
}\r
\r
+ //\r
+ // This is a device driver, so ChildHandle must be NULL.\r
+ //\r
+ if (ChildHandle != NULL) {\r
+ return EFI_UNSUPPORTED;\r
+ }\r
+\r
//\r
// Validate controller handle\r
//\r
Status = gBS->OpenProtocol (\r
ControllerHandle,\r
&gEfiWinNtIoProtocolGuid,\r
- &BlockIo,\r
+ (VOID **) &BlockIo,\r
gWinNtBlockIoDriverBinding.DriverBindingHandle,\r
ControllerHandle,\r
EFI_OPEN_PROTOCOL_BY_DRIVER\r
return EFI_UNSUPPORTED;\r
}\r
\r
+ \r
if (Status == EFI_UNSUPPORTED) {\r
return Status;\r
} else if (Status != EFI_ALREADY_STARTED) {\r