X-Git-Url: https://wimlib.net/git/?p=wimlib;a=blobdiff_plain;f=src%2Fwimboot.c;h=467f9fb389c5dcd967cfb65e14bacae9e724d7e4;hp=67798da3fd02f0deefc8591fd915f98509246a67;hb=0ae7e5538476723feb14f07a478b92210e24a21b;hpb=5538002965b9a7f08aef62c7b03194aa40bb0751 diff --git a/src/wimboot.c b/src/wimboot.c index 67798da3..467f9fb3 100644 --- a/src/wimboot.c +++ b/src/wimboot.c @@ -187,8 +187,8 @@ query_partition_and_disk_info(const wchar_t *path, } if (part_info->PartitionStyle == PARTITION_STYLE_GPT) { - BUILD_BUG_ON(sizeof(part_info->Gpt.PartitionId) != - sizeof(drive_info->Gpt.DiskId)); + STATIC_ASSERT(sizeof(part_info->Gpt.PartitionId) == + sizeof(drive_info->Gpt.DiskId)); if (!memcmp(&part_info->Gpt.PartitionId, &drive_info->Gpt.DiskId, sizeof(drive_info->Gpt.DiskId))) @@ -395,7 +395,7 @@ fill_in_wimoverlay_dat(u8 *buf, new_entry_1->entry_2_length = new_entry_2_size; new_entry_1->wim_type = WIM_BOOT_NOT_OS_WIM; new_entry_1->wim_index = image; - BUILD_BUG_ON(sizeof(new_entry_1->guid) != GUID_SIZE); + STATIC_ASSERT(sizeof(new_entry_1->guid) == GUID_SIZE); copy_guid(new_entry_1->guid, wim_guid); p += sizeof(struct WimOverlay_dat_entry_1); @@ -438,21 +438,21 @@ fill_in_wimoverlay_dat(u8 *buf, new_entry_2->disk.mbr.padding[1] = 0x00000000; new_entry_2->disk.mbr.padding[2] = 0x00000000; } else { - BUILD_BUG_ON(sizeof(new_entry_2->partition.gpt.part_unique_guid) != - sizeof(part_info->Gpt.PartitionId)); + STATIC_ASSERT(sizeof(new_entry_2->partition.gpt.part_unique_guid) == + sizeof(part_info->Gpt.PartitionId)); memcpy(new_entry_2->partition.gpt.part_unique_guid, &part_info->Gpt.PartitionId, sizeof(part_info->Gpt.PartitionId)); new_entry_2->partition_table_type = WIMOVERLAY_PARTITION_TYPE_GPT; - BUILD_BUG_ON(sizeof(new_entry_2->disk.gpt.disk_guid) != - sizeof(disk_info->Gpt.DiskId)); + STATIC_ASSERT(sizeof(new_entry_2->disk.gpt.disk_guid) == + sizeof(disk_info->Gpt.DiskId)); memcpy(new_entry_2->disk.gpt.disk_guid, &disk_info->Gpt.DiskId, sizeof(disk_info->Gpt.DiskId)); - BUILD_BUG_ON(sizeof(new_entry_2->disk.gpt.disk_guid) != - sizeof(new_entry_2->partition.gpt.part_unique_guid)); + STATIC_ASSERT(sizeof(new_entry_2->disk.gpt.disk_guid) == + sizeof(new_entry_2->partition.gpt.part_unique_guid)); } new_entry_2->unknown_0x58[0] = 0x00000000; new_entry_2->unknown_0x58[1] = 0x00000000; @@ -866,47 +866,6 @@ out: return ret; } -/* Try to attach an instance of the Windows Overlay File System Filter Driver to - * the specified drive (such as C:) */ -static bool -try_to_attach_wof(const wchar_t *drive) -{ - HMODULE fltlib; - bool retval = false; - - /* Use FilterAttach() from Fltlib.dll. */ - - fltlib = LoadLibrary(L"Fltlib.dll"); - - if (!fltlib) { - WARNING("Failed to load Fltlib.dll"); - return retval; - } - - HRESULT (WINAPI *func_FilterAttach)(LPCWSTR lpFilterName, - LPCWSTR lpVolumeName, - LPCWSTR lpInstanceName, - DWORD dwCreatedInstanceNameLength, - LPWSTR lpCreatedInstanceName); - - func_FilterAttach = (void *)GetProcAddress(fltlib, "FilterAttach"); - - if (func_FilterAttach) { - HRESULT res; - - res = (*func_FilterAttach)(L"WoF", drive, NULL, 0, NULL); - - if (res == S_OK) - retval = true; - } else { - WARNING("FilterAttach() does not exist in Fltlib.dll"); - } - - FreeLibrary(fltlib); - - return retval; -} - /* * Allocate a WOF data source ID for a WIM file. * @@ -1001,7 +960,7 @@ retry_ioctl: CloseHandle(h); h = INVALID_HANDLE_VALUE; tried_to_attach_wof = true; - if (try_to_attach_wof(drive_path + 4)) + if (win32_try_to_attach_wof(drive_path + 4)) goto retry_ioctl; } ret = WIMLIB_ERR_UNSUPPORTED; @@ -1135,9 +1094,9 @@ wimboot_set_pointer(HANDLE h, struct wim_provider_rpdata wim_info; } in; - BUILD_BUG_ON(sizeof(in) != 8 + - sizeof(struct wof_external_info) + - sizeof(struct wim_provider_rpdata)); + STATIC_ASSERT(sizeof(in) == 8 + + sizeof(struct wof_external_info) + + sizeof(struct wim_provider_rpdata)); in.hdr.rptag = WIM_IO_REPARSE_TAG_WOF; in.hdr.rpdatalen = sizeof(in) - sizeof(in.hdr);