in crates/libs/core/src/runtime/stateful_bridge.rs [184:201]
fn BeginChangeRole(
&self,
epoch: *const FABRIC_EPOCH,
role: FABRIC_REPLICA_ROLE,
callback: windows_core::Ref<super::IFabricAsyncOperationCallback>,
) -> crate::WinResult<super::IFabricAsyncOperationContext> {
let inner = self.inner.clone();
let epoch2: Epoch = unsafe { epoch.as_ref().unwrap().into() };
let role2: ReplicaRole = (&role).into();
let (ctx, token) = BridgeContext::make(callback);
ctx.spawn(&self.rt, async move {
inner
.change_role(&epoch2, &role2, token)
.await
.map_err(crate::WinError::from)
})
}