1#![cfg(feature = "f_Win32_System_Power")]
2
3use crate::{foundation::BoolExt, windows};
4use std::{mem, ptr};
5use windows::Win32::{Foundation::BOOL, System::Power::POWERBROADCAST_SETTING};
6
7pub trait PowerBroadcastSettingExt {
8 unsafe fn cast_data<T>(&self) -> windows::core::Result<&T>;
9}
10
11impl PowerBroadcastSettingExt for POWERBROADCAST_SETTING {
12 unsafe fn cast_data<T>(&self) -> windows::core::Result<&T> {
13 BOOL::from(self.DataLength == mem::size_of::<T>() as u32).ok_or_e_fail()?;
14 Ok(&*ptr::addr_of!(self.Data).cast::<T>())
15 }
16}