+#if 0
+/* Fixup the 1st cdrom influnce for Windows boot */
+#endif
+
+STATIC EFI_STATUS EFIAPI ventoy_wrapper_locate_handle
+(
+ IN EFI_LOCATE_SEARCH_TYPE SearchType,
+ IN EFI_GUID *Protocol, OPTIONAL
+ IN VOID *SearchKey, OPTIONAL
+ IN OUT UINTN *BufferSize,
+ OUT EFI_HANDLE *Buffer
+)
+{
+ UINTN i;
+ EFI_HANDLE Handle = NULL;
+ EFI_STATUS Status = EFI_SUCCESS;
+
+ Status = g_org_locate_handle(SearchType, Protocol, SearchKey, BufferSize, Buffer);
+
+ if (EFI_SUCCESS == Status && Protocol && CompareGuid(&gEfiBlockIoProtocolGuid, Protocol))
+ {
+ for (i = 0; i < (*BufferSize) / sizeof(EFI_HANDLE); i++)
+ {
+ if (Buffer[i] == gBlockData.Handle)
+ {
+ Handle = Buffer[0];
+ Buffer[0] = Buffer[i];
+ Buffer[i] = Handle;
+ break;
+ }
+ }
+ }
+
+ return Status;
+}
+
+EFI_STATUS ventoy_hook_1st_cdrom_start(VOID)
+{
+ g_org_locate_handle = gBS->LocateHandle;
+ gBS->LocateHandle = ventoy_wrapper_locate_handle;
+
+ return EFI_SUCCESS;
+}
+
+EFI_STATUS ventoy_hook_1st_cdrom_stop(VOID)
+{
+ gBS->LocateHandle = g_org_locate_handle;
+ g_org_locate_handle = NULL;
+
+ return EFI_SUCCESS;
+}
+