C header:
#define MIDL_INTERFACE(x) struct __declspec(uuid(x))
MIDL_INTERFACE("00000000-0000-0000-C000-000000000046")
IBase {
virtual int __stdcall QueryInterface(void* riid, void** ppvObject) = 0;
virtual unsigned int __stdcall AddRef() = 0;
virtual unsigned int __stdcall Release() = 0;
};
MIDL_INTERFACE("AF86E2E0-B12D-4c6a-9C5A-D7AA65101E90")
IDerived : public IBase {
public:
virtual int __stdcall GetIids(unsigned int* iidCount, void** iids) = 0;
virtual int __stdcall GetRuntimeClassName(void** className) = 0;
virtual int __stdcall GetTrustLevel(int* trustLevel) = 0;
};
Expected RDL output:
#[win32]
mod Test {
#[guid(0x00000000_0000_0000_c000_000000000046)]
interface IBase {
fn QueryInterface(&self, riid: *mut void, ppvObject: *mut *mut void) -> i32;
fn AddRef(&self) -> u32;
fn Release(&self) -> u32;
}
#[guid(0xaf86e2e0_b12d_4c6a_9c5a_d7aa65101e90)]
interface IDerived: IBase {
fn GetIids(&self, iidCount: *mut u32, iids: *mut *mut void) -> i32;
fn GetRuntimeClassName(&self, className: *mut *mut void) -> i32;
fn GetTrustLevel(&self, trustLevel: *mut i32) -> i32;
}
}
Actual RDL output:
#[win32]
mod Test {
#[guid(0x00000000_0000_0000_c000_000000000046)]
interface IBase {
fn QueryInterface(&self, riid: *mut void, ppvObject: *mut *mut void) -> i32;
fn AddRef(&self) -> u32;
fn Release(&self) -> u32;
}
#[guid(0x00000000_0000_0000_c000_000000000046)]
interface IDerived: IBase {
fn GetIids(&self, iidCount: *mut u32, iids: *mut *mut void) -> i32;
fn GetRuntimeClassName(&self, className: *mut *mut void) -> i32;
fn GetTrustLevel(&self, trustLevel: *mut i32) -> i32;
}
}
C header:
Expected RDL output:
Actual RDL output: