From 7b051810584311753311fc17b632234f641c84f1 Mon Sep 17 00:00:00 2001 From: k-brac Date: Sun, 15 Jan 2017 02:59:50 +0100 Subject: [PATCH] implement avrt with regard to #316 (#348) * implement avrt with regard to #316 * implements maintainer comments * unsing EXTERN macro + formating --- Cargo.toml | 3 ++ build.rs | 1 + i686/lib/libavrt.a | Bin 0 -> 12884 bytes src/um/avrt.rs | 97 +++++++++++++++++++++++++++++++++++++++++++ src/um/mod.rs | 1 + x86_64/lib/libavrt.a | Bin 0 -> 12780 bytes 6 files changed, 102 insertions(+) create mode 100644 i686/lib/libavrt.a create mode 100644 src/um/avrt.rs create mode 100644 x86_64/lib/libavrt.a diff --git a/Cargo.toml b/Cargo.toml index 02fd02dbb..0f69ab233 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -104,6 +104,7 @@ headers = ["headers-shared", "headers-um", "headers-vc", "headers-winrt"] "headers-um" = [ "um-audioclient", "um-audiosessiontypes", + "um-avrt", "um-cfgmgr32", "um-cguid", "um-combaseapi", @@ -180,6 +181,7 @@ headers = ["headers-shared", "headers-um", "headers-vc", "headers-winrt"] ] "um-audioclient" = ["shared-basetsd", "shared-guiddef", "shared-minwindef", "shared-mmreg", "shared-winerror", "shared-wtypesbase", "um-audiosessiontypes", "um-strmif", "um-unknwnbase", "um-winnt"] "um-audiosessiontypes" = ["shared-minwindef"] +"um-avrt" = ["um-winnt", "avrt"] "um-cfgmgr32" = ["shared-basetsd", "shared-guiddef", "shared-minwindef", "um-winnt"] "um-cguid" = ["shared-guiddef"] "um-combaseapi" = ["shared-basetsd", "shared-minwindef", "shared-wtypesbase", "um-objidlbase", "ole32"] @@ -274,6 +276,7 @@ libraries = [ "setupapi", "wininet", ] +"avrt" = [] "kernel32" = [] "ole32" = [] "ncrypt" = [] diff --git a/build.rs b/build.rs index 72baa6755..4798b22a7 100644 --- a/build.rs +++ b/build.rs @@ -6,6 +6,7 @@ // except according to those terms. use std::env::var; const LIBS: &'static [&'static str] = &[ + "avrt", "kernel32", "ncrypt", "ole32", diff --git a/i686/lib/libavrt.a b/i686/lib/libavrt.a new file mode 100644 index 0000000000000000000000000000000000000000..7b7ff7a313180e34a138dd1085c121f98732be03 GIT binary patch literal 12884 zcmeHNPj4GV6n|bPO=?m=2&76twWXn`Qsu4_$4R6J*(wNBrL-hbgSa@GcoQ#m>}b8Q z5(!lmCk`BXLVOB70H=NiJ_ZMl94YV3ti7}UX2y|eWo1X2nf1)iZ+G7Q_P1|l_U4A| z9kf3$-7}-9Qmt9ma;3VuW||i35=+ypRMxBfAA2PLxB)QpH^5v6ptQvE!ao3%-}#g0 z_kIVU{K2n0Uw;Nb`NQvdzEMRpm~Xz#^R2%CDBs5aQ@-;D&v$cSrtrzioT= zf$w;3-**rCyBYsagUReP^z1NLVCSKI#)pzPS7j+SCOK4LuTj^w$DxhEmcMJe{-Z9x zzDHgQ-PJw%%Ilq;)T`mODPUx0)3FDR(u@p6Rvz@+)N2t3CP$H#FPx6!t1m_hBRltz zf2nr9Jlm}=S)zZGP=&pQzC8|=+N)P;S{KJ~XvrBk-spjgu{6R16|gb*_SEstx6k{& zbG+sBPkP}a-7_MJ1I9cLFNSbOD`?c3Q9)>8-TWqH5fSHR#o;aoDfh-%5x3|2FE zU1DPPIBsRwPPqAO-0BdwfCmdHxM6?e$<|J})j_ofC?C2VC+PV16~Iy9(0)2>2--zI zk=bI*Ho-(68Ce*?KgBGJ;2Romu|Q=s1^#1xnZ+&%hWUi;-!f0=hVf62e((=dt8KfmS# zqZxR}O{(dc!bppiyf9!H53(Yqcj5Tc!peO4>Qnml;zig7a1A2y<1l_@_m<8_TmT@Q;(n&z;*scUI%P4bx*)!Tn8rfD zE#@gY3;s)ZuLMtspt=!8vT@Qia0b)=Dbd+EBR^)p0mu$-*$7&wGGH6a?6_PJwx`bm zLJlu!a(ER(1C}Tb;2!-MhoIu{UT|NjdYv5pK{&6B!+tt0!Qp4=xDkg<9A7=a;9-!` zIlK_%a4aO;WgM7RF0)4#M;~%|bLb4L4LHCu%H{a*#ZXq5siwkGXSgA^D>=8x`J9&N zF*E7&B)R>Tl-rHV&FyiPH&nW9X>xmwW^YW1KRH zZ8Mc>*K%f)(_?C!h{9DfOx!%zR_!Z{*%^D8XoptNrZocBW_HH#Bf+L$(-jC<9SiV^UJYzBIWtmpJS 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::minwindef::{BOOL, LPDWORD, PULONG}; +use shared::guiddef::GUID; +use um::winnt::{HANDLE, PLARGE_INTEGER, LONGLONG, PHANDLE, LPCWSTR, LPCSTR}; + +ENUM!{enum AVRT_PRIORITY { + AVRT_PRIORITY_VERYLOW = -2i32 as u32, + AVRT_PRIORITY_LOW = -1i32 as u32, + AVRT_PRIORITY_NORMAL = 0u32, + AVRT_PRIORITY_HIGH = 1u32, + AVRT_PRIORITY_CRITICAL = 2u32, +}} + +pub const THREAD_ORDER_GROUP_INFINITE_TIMEOUT: LONGLONG = -1; + +EXTERN!{stdcall fn AvSetMmThreadCharacteristicsA( + TaskName: LPCSTR, + TaskIndex: LPDWORD +) -> HANDLE} + +EXTERN!{stdcall fn AvSetMmThreadCharacteristicsW( + TaskName: LPCSTR, + TaskIndex: LPDWORD +) -> HANDLE} + +EXTERN!{stdcall fn AvSetMmMaxThreadCharacteristicsA( + FirstTask: LPCSTR, + SecondTask: LPCSTR, + TaskIndex: LPDWORD +) -> HANDLE} + +EXTERN!{stdcall fn AvSetMmMaxThreadCharacteristicsW( + FirstTask: LPCWSTR, + SecondTask: LPCWSTR, + TaskIndex: LPDWORD +) -> HANDLE} + +EXTERN!{stdcall fn AvRevertMmThreadCharacteristics( + avrt_handle: HANDLE +) -> BOOL} + +EXTERN!{stdcall fn AvSetMmThreadPriority( + AvrtHandle: HANDLE, + Priority: AVRT_PRIORITY +) -> BOOL} + +EXTERN!{stdcall fn AvRtCreateThreadOrderingGroup( + Context: PHANDLE, + Period: PLARGE_INTEGER, + ThreadOrderingGuid: *mut GUID, + Timeout: PLARGE_INTEGER +) -> BOOL} + +EXTERN!{stdcall fn AvRtCreateThreadOrderingGroupExA( + Context: PHANDLE, + Period: PLARGE_INTEGER, + ThreadOrderingGuid: *mut GUID, + Timeout: PLARGE_INTEGER, + TaskName: LPCSTR +)-> BOOL} + +EXTERN!{stdcall fn AvRtCreateThreadOrderingGroupExW( + Context: PHANDLE, + Period: PLARGE_INTEGER, + ThreadOrderingGuid: *mut GUID, + Timeout: PLARGE_INTEGER, + TaskName: LPCWSTR +) -> BOOL} + +EXTERN!{stdcall fn AvRtJoinThreadOrderingGroup( + Context: PHANDLE, + ThreadOrderingGuid: *mut GUID, + Before: BOOL +) -> BOOL} + +EXTERN!{stdcall fn AvRtWaitOnThreadOrderingGroup( + Context: HANDLE +) -> BOOL} + +EXTERN!{stdcall fn AvRtLeaveThreadOrderingGroup( + Context: HANDLE +) -> BOOL} + +EXTERN!{stdcall fn AvRtDeleteThreadOrderingGroup( + Context: HANDLE +) -> BOOL} + +EXTERN!{stdcall fn AvQuerySystemResponsiveness( + AvrtHandle: HANDLE, + SystemResponsivenessValue: PULONG +) -> BOOL} diff --git a/src/um/mod.rs b/src/um/mod.rs index dc73071e7..af31f3ba6 100644 --- a/src/um/mod.rs +++ b/src/um/mod.rs @@ -10,6 +10,7 @@ pub mod gl; #[cfg(feature = "um-audioclient")] pub mod audioclient; #[cfg(feature = "um-audiosessiontypes")] pub mod audiosessiontypes; +#[cfg(feature = "um-avrt")] pub mod avrt; #[cfg(feature = "um-cfgmgr32")] pub mod cfgmgr32; #[cfg(feature = "um-cguid")] pub mod cguid; #[cfg(feature = "um-combaseapi")] pub mod combaseapi; diff --git a/x86_64/lib/libavrt.a b/x86_64/lib/libavrt.a new file mode 100644 index 0000000000000000000000000000000000000000..b009a82eeaa2b374c2268e4b20ba1e403cdac869 GIT binary patch literal 12780 zcmeI2-D(?06o8KQV~w+FD!N$g)|j zg$02J?-A}-AXEX}uCU1zsmqtqI> zUdw7ZJ?qehR>!v5$vS8bp4i@_!>x{swHvN;jrK@@gIps-#; zJUK)Z)=_hBQFk!;e^a>3!@vapE}6mwe^qH^(kKk%<*OtYQZ3g9d6EnA$tzJ?21@Dq zEVF)Ya4rv<9sXBGaSXi9un@h8#afYY4rswbu*6;W%(Zv8W zrzJ(pCs_#UAuXIo7BaMaq@fyi_Jh-T!Ok@6TE+0FcZL-76@N!Ou zSC=I_EEvAPp=UAN@z<3um&vdz^{Zp}$8@U(I&cC}!e)Gg2rJ>pAY`wi{tHm@|>(Tk_F zUy|S-W%O*DIoWOu+wETwh%CF^mF(SR+U7Fz<@N4f8p(4_?5VM)FWH%YrM9q6Ug!QOAOQpg~%tr16?vWB$P}-v`eghncq8iBM`UYc^laC1vR&+&XxV<1U6V;>TltLyeb+J8 z9!b7k6U~<-BYfGCv1^h%msEKs1?8`u@^TjCS7O&hOL??wk|n0M<;jyv73GDWqNUux z+EI5+N_xu2+K%VlHBtVPh2P?7@Xk2hF_R~kDz+QLyC%iy&SJQ0LTfoH+Y`jL_B+h+ z_EX4rqY%AcJ`e?*mS6|3SsDmEajl**yp-e#ri$@m|AbdY^`7}E`zN%*>Mw=In{R`) TCG(xOf1;j!z_vyr)i3!6SQfZ9 literal 0 HcmV?d00001