diff --git a/crates/libs/bindgen/src/implements.rs b/crates/libs/bindgen/src/implements.rs index ca3f618171..59e0b24fe1 100644 --- a/crates/libs/bindgen/src/implements.rs +++ b/crates/libs/bindgen/src/implements.rs @@ -5,10 +5,6 @@ pub fn gen(gen: &Gen, def: TypeDef) -> TokenStream { return quote! {}; } - if gen.reader.type_def_name(def).starts_with("Disp") && gen.reader.type_def_methods(def).next().is_none() { - return quote! {}; - } - let generics: &Vec = &gen.reader.type_def_generics(def).collect(); let type_ident = to_ident(gen.reader.type_def_name(def)); let impl_ident = type_ident.join("_Impl"); diff --git a/crates/libs/bindgen/src/interfaces.rs b/crates/libs/bindgen/src/interfaces.rs index 1a99a6dfaf..bc7cc2e075 100644 --- a/crates/libs/bindgen/src/interfaces.rs +++ b/crates/libs/bindgen/src/interfaces.rs @@ -24,15 +24,6 @@ fn gen_sys_interface(gen: &Gen, def: TypeDef) -> TokenStream { fn gen_win_interface(gen: &Gen, def: TypeDef) -> TokenStream { let generics: &Vec = &gen.reader.type_def_generics(def).collect(); let ident = gen.type_def_name(def, generics); - - if gen.reader.type_def_methods(def).next().is_none() && gen.reader.type_def_name(def).starts_with("Disp") { - if let Some(guid) = gen.reader.type_def_guid(def) { - let value = gen.guid(&guid); - let guid = gen.type_name(&Type::GUID); - return quote! { pub const #ident: #guid = #value; }; - } - } - let is_exclusive = gen.reader.type_def_is_exclusive(def); let phantoms = gen.generic_phantoms(generics); let constraints = gen.generic_constraints(generics); diff --git a/crates/libs/metadata/src/bindings.rs b/crates/libs/metadata/src/bindings.rs index ec517e94de..9e25db9286 100644 --- a/crates/libs/metadata/src/bindings.rs +++ b/crates/libs/metadata/src/bindings.rs @@ -20,7 +20,7 @@ pub const IMAGE_FILE_EXECUTABLE_IMAGE: IMAGE_FILE_CHARACTERISTICS = 2u16; pub const IMAGE_FILE_MACHINE_I386: IMAGE_FILE_MACHINE = 332u16; pub const IMAGE_NT_OPTIONAL_HDR32_MAGIC: IMAGE_OPTIONAL_HEADER_MAGIC = 267u16; pub const IMAGE_NT_OPTIONAL_HDR64_MAGIC: IMAGE_OPTIONAL_HEADER_MAGIC = 523u16; -pub const IMAGE_NT_SIGNATURE: u16 = 17744u16; +pub const IMAGE_NT_SIGNATURE: u32 = 17744u32; pub const IMAGE_SUBSYSTEM_WINDOWS_CUI: IMAGE_SUBSYSTEM = 3u16; #[repr(C, packed(2))] diff --git a/crates/libs/metadata/src/reader/file.rs b/crates/libs/metadata/src/reader/file.rs index c31c16f4e0..26f407863d 100644 --- a/crates/libs/metadata/src/reader/file.rs +++ b/crates/libs/metadata/src/reader/file.rs @@ -59,7 +59,7 @@ impl File { let dos = result.bytes.view_as::(0); - if dos.e_magic != IMAGE_DOS_SIGNATURE as _ || result.bytes.copy_as::(dos.e_lfanew as _) != IMAGE_NT_SIGNATURE { + if dos.e_magic != IMAGE_DOS_SIGNATURE as _ || result.bytes.copy_as::(dos.e_lfanew as _) != IMAGE_NT_SIGNATURE { return Err(error_invalid_winmd()); } diff --git a/crates/libs/metadata/src/reader/mod.rs b/crates/libs/metadata/src/reader/mod.rs index 6f44d557b0..eed0ec7237 100644 --- a/crates/libs/metadata/src/reader/mod.rs +++ b/crates/libs/metadata/src/reader/mod.rs @@ -553,10 +553,6 @@ impl<'a> Reader<'a> { params[position].array_info = ArrayInfo::Removed; } } - // TODO: workaround for https://github.com/microsoft/win32metadata/issues/1014 - ArrayInfo::Fixed(fixed) if fixed == 0 || self.param_free_with(params[position].def).is_some() => { - params[position].array_info = ArrayInfo::Removed; - } _ => {} } } @@ -954,8 +950,7 @@ impl<'a> Reader<'a> { _ => {} } } - // TODO: IRestrictedErrorInfo workaround for https://github.com/microsoft/win32metadata/issues/923 - matches!(self.type_def_type_name(row), TypeName::IAsyncAction | TypeName::IAsyncActionWithProgress | TypeName::IAsyncOperation | TypeName::IAsyncOperationWithProgress | TypeName::IRestrictedErrorInfo) + matches!(self.type_def_type_name(row), TypeName::IAsyncAction | TypeName::IAsyncActionWithProgress | TypeName::IAsyncOperation | TypeName::IAsyncOperationWithProgress) } pub fn type_def_invalid_values(&self, row: TypeDef) -> Vec { let mut values = Vec::new(); diff --git a/crates/libs/metadata/src/writer/file.rs b/crates/libs/metadata/src/writer/file.rs index 3ea32bd4de..1fb370a1b9 100644 --- a/crates/libs/metadata/src/writer/file.rs +++ b/crates/libs/metadata/src/writer/file.rs @@ -79,8 +79,7 @@ pub fn write(filename: &str, tables: Tables) { let mut buffer = Vec::::new(); buffer.write(&dos); - // TODO: workaround for https://github.com/microsoft/win32metadata/issues/963 - buffer.write(&(IMAGE_NT_SIGNATURE as u32)); + buffer.write(&IMAGE_NT_SIGNATURE); buffer.write(&file); buffer.write(&optional); buffer.write(§ion); diff --git a/crates/libs/windows/src/Windows/Win32/Networking/BackgroundIntelligentTransferService/mod.rs b/crates/libs/windows/src/Windows/Win32/Networking/BackgroundIntelligentTransferService/mod.rs index 7d9b70741f..8d16ad4aed 100644 --- a/crates/libs/windows/src/Windows/Win32/Networking/BackgroundIntelligentTransferService/mod.rs +++ b/crates/libs/windows/src/Windows/Win32/Networking/BackgroundIntelligentTransferService/mod.rs @@ -3004,8 +3004,8 @@ impl IBackgroundCopyJobHttpOptions { pub unsafe fn RemoveClientCertificate(&self) -> ::windows::core::Result<()> { (::windows::core::Interface::vtable(self).RemoveClientCertificate)(::windows::core::Interface::as_raw(self)).ok() } - pub unsafe fn GetClientCertificate(&self, pstorelocation: &mut BG_CERT_STORE_LOCATION, pstorename: &mut ::windows::core::PWSTR, ppcerthashblob: *mut *mut u8, psubjectname: &mut ::windows::core::PWSTR) -> ::windows::core::Result<()> { - (::windows::core::Interface::vtable(self).GetClientCertificate)(::windows::core::Interface::as_raw(self), ::core::mem::transmute(pstorelocation), ::core::mem::transmute(pstorename), ::core::mem::transmute(ppcerthashblob), ::core::mem::transmute(psubjectname)).ok() + pub unsafe fn GetClientCertificate(&self, pstorelocation: &mut BG_CERT_STORE_LOCATION, pstorename: &mut ::windows::core::PWSTR, ppcerthashblob: &mut *mut u8, psubjectname: &mut ::windows::core::PWSTR) -> ::windows::core::Result<()> { + (::windows::core::Interface::vtable(self).GetClientCertificate)(::windows::core::Interface::as_raw(self), ::core::mem::transmute(pstorelocation), ::core::mem::transmute(pstorename), ::core::mem::transmute(ppcerthashblob.as_ptr()), ::core::mem::transmute(psubjectname)).ok() } pub unsafe fn SetCustomHeaders<'a, P0>(&self, requestheaders: P0) -> ::windows::core::Result<()> where @@ -3093,8 +3093,8 @@ impl IBackgroundCopyJobHttpOptions2 { pub unsafe fn RemoveClientCertificate(&self) -> ::windows::core::Result<()> { (::windows::core::Interface::vtable(self).base__.RemoveClientCertificate)(::windows::core::Interface::as_raw(self)).ok() } - pub unsafe fn GetClientCertificate(&self, pstorelocation: &mut BG_CERT_STORE_LOCATION, pstorename: &mut ::windows::core::PWSTR, ppcerthashblob: *mut *mut u8, psubjectname: &mut ::windows::core::PWSTR) -> ::windows::core::Result<()> { - (::windows::core::Interface::vtable(self).base__.GetClientCertificate)(::windows::core::Interface::as_raw(self), ::core::mem::transmute(pstorelocation), ::core::mem::transmute(pstorename), ::core::mem::transmute(ppcerthashblob), ::core::mem::transmute(psubjectname)).ok() + pub unsafe fn GetClientCertificate(&self, pstorelocation: &mut BG_CERT_STORE_LOCATION, pstorename: &mut ::windows::core::PWSTR, ppcerthashblob: &mut *mut u8, psubjectname: &mut ::windows::core::PWSTR) -> ::windows::core::Result<()> { + (::windows::core::Interface::vtable(self).base__.GetClientCertificate)(::windows::core::Interface::as_raw(self), ::core::mem::transmute(pstorelocation), ::core::mem::transmute(pstorename), ::core::mem::transmute(ppcerthashblob.as_ptr()), ::core::mem::transmute(psubjectname)).ok() } pub unsafe fn SetCustomHeaders<'a, P0>(&self, requestheaders: P0) -> ::windows::core::Result<()> where @@ -3201,8 +3201,8 @@ impl IBackgroundCopyJobHttpOptions3 { pub unsafe fn RemoveClientCertificate(&self) -> ::windows::core::Result<()> { (::windows::core::Interface::vtable(self).base__.base__.RemoveClientCertificate)(::windows::core::Interface::as_raw(self)).ok() } - pub unsafe fn GetClientCertificate(&self, pstorelocation: &mut BG_CERT_STORE_LOCATION, pstorename: &mut ::windows::core::PWSTR, ppcerthashblob: *mut *mut u8, psubjectname: &mut ::windows::core::PWSTR) -> ::windows::core::Result<()> { - (::windows::core::Interface::vtable(self).base__.base__.GetClientCertificate)(::windows::core::Interface::as_raw(self), ::core::mem::transmute(pstorelocation), ::core::mem::transmute(pstorename), ::core::mem::transmute(ppcerthashblob), ::core::mem::transmute(psubjectname)).ok() + pub unsafe fn GetClientCertificate(&self, pstorelocation: &mut BG_CERT_STORE_LOCATION, pstorename: &mut ::windows::core::PWSTR, ppcerthashblob: &mut *mut u8, psubjectname: &mut ::windows::core::PWSTR) -> ::windows::core::Result<()> { + (::windows::core::Interface::vtable(self).base__.base__.GetClientCertificate)(::windows::core::Interface::as_raw(self), ::core::mem::transmute(pstorelocation), ::core::mem::transmute(pstorename), ::core::mem::transmute(ppcerthashblob.as_ptr()), ::core::mem::transmute(psubjectname)).ok() } pub unsafe fn SetCustomHeaders<'a, P0>(&self, requestheaders: P0) -> ::windows::core::Result<()> where diff --git a/crates/tests/interface/tests/com.rs b/crates/tests/interface/tests/com.rs index 3be789180c..2117854d6f 100644 --- a/crates/tests/interface/tests/com.rs +++ b/crates/tests/interface/tests/com.rs @@ -125,12 +125,14 @@ fn test_custom_interface() -> windows::core::Result<()> { // This works because `ICustomPersistMemory` and `IPersistMemory` share the same guid let p: IPersistMemory = p.cast()?; assert_eq!(p.GetClassID()?, "117fb826-2155-483a-b50d-bc99a2c7cca3".into()); - // TODO: can't test IsDirty until this is fixed: https://github.com/microsoft/win32metadata/issues/838 assert_eq!(p.GetSizeMax()?, 10); + assert_eq!(p.IsDirty(), S_FALSE); p.Load(&[0xAAu8, 0xBB, 0xCC])?; + assert_eq!(p.IsDirty(), S_OK); let mut memory = [0x00u8, 0x00, 0x00, 0x00]; p.Save(&mut memory, true)?; assert_eq!(memory, [0xAAu8, 0xBB, 0xCC, 0x00]); + assert_eq!(p.IsDirty(), S_FALSE); // Use the custom implementation of `Persist` through the custom interface of `ICustomPersist` let p: ICustomPersistMemory = p.cast()?; diff --git a/crates/tests/win32_arrays/tests/multi_byte.rs b/crates/tests/win32_arrays/tests/multi_byte.rs index 6c14aaa2c6..e71f376748 100644 --- a/crates/tests/win32_arrays/tests/multi_byte.rs +++ b/crates/tests/win32_arrays/tests/multi_byte.rs @@ -9,7 +9,6 @@ fn test() { assert_eq!(len, 5); let mut c: [u8; 5] = [0xFF; 5]; - // TODO: workaround for https://github.com/microsoft/win32metadata/issues/820 let len = WideCharToMultiByte(CP_UTF8, Default::default(), &b, Some(&mut c), None, None); assert_eq!(len, 5); diff --git a/crates/tests/win32_arrays/tests/xmllite.rs b/crates/tests/win32_arrays/tests/xmllite.rs index eb68e5d231..759c13bcce 100644 --- a/crates/tests/win32_arrays/tests/xmllite.rs +++ b/crates/tests/win32_arrays/tests/xmllite.rs @@ -57,7 +57,6 @@ fn test() -> Result<()> { let mut chars_read = 0; let mut read_count = 0; - // TODO: workaround for https://github.com/microsoft/win32metadata/issues/816 while reader.ReadValueChunk(&mut chunk, &mut chars_read).is_ok() && chars_read > 0 { message.extend_from_slice(&chunk[0..chars_read as _]); read_count += 1;