// Licensed under the Apache License, Version 2.0 // or the MIT license // , at your option. // All files in the project carrying such notice may not be copied, modified, or distributed // except according to those terms. use shared::basetsd::{UINT32, UINT64}; use shared::guiddef::REFIID; use um::objidl::IApartmentShutdown; use um::winnt::{HRESULT, VOID}; use winrt::activation::IActivationFactory; use winrt::hstring::HSTRING; use winrt::inspectable::IInspectable; ENUM!{enum RO_INIT_TYPE { RO_INIT_SINGLETHREADED = 0, RO_INIT_MULTITHREADED = 1, }} pub enum RO_REGISTRATION_COOKIE__ {} pub type RO_REGISTRATION_COOKIE = *mut RO_REGISTRATION_COOKIE__; FN!{stdcall PFNGETACTIVATIONFACTORY( HSTRING, *mut *mut IActivationFactory, ) -> HRESULT} extern "system" { pub fn RoInitialize( initType: RO_INIT_TYPE, ) -> HRESULT; pub fn RoUninitialize(); pub fn RoActivateInstance( activatableClassId: HSTRING, instance: *mut *mut IInspectable, ) -> HRESULT; pub fn RoRegisterActivationFactories( activatableClassIds: *const HSTRING, activationFactoryCallbacks: *const PFNGETACTIVATIONFACTORY, count: UINT32, cookie: *mut RO_REGISTRATION_COOKIE, ) -> HRESULT; pub fn RoRevokeActivationFactories( cookie: RO_REGISTRATION_COOKIE, ); pub fn RoGetActivationFactory( activatableClassId: HSTRING, iid: REFIID, factory: *mut *mut VOID, ) -> HRESULT; } DECLARE_HANDLE!{APARTMENT_SHUTDOWN_REGISTRATION_COOKIE, APARTMENT_SHUTDOWN_REGISTRATION_COOKIE__} extern "system" { pub fn RoRegisterForApartmentShutdown( callbackObject: *const IApartmentShutdown, apartmentIdentifier: *mut UINT64, regCookie: *mut APARTMENT_SHUTDOWN_REGISTRATION_COOKIE, ) -> HRESULT; pub fn RoUnregisterForApartmentShutdown( regCookie: APARTMENT_SHUTDOWN_REGISTRATION_COOKIE, ) -> HRESULT; pub fn RoGetApartmentIdentifier( apartmentIdentifier: *mut UINT64, ) -> HRESULT; }