// 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. //! ApiSet Contract for api-ms-win-core-threadpool-l1. use shared::basetsd::ULONG_PTR; use shared::minwindef::{BOOL, DWORD, HMODULE, PFILETIME, ULONG}; use um::minwinbase::PCRITICAL_SECTION; use um::winnt::{ HANDLE, PTP_CALLBACK_ENVIRON, PTP_CALLBACK_INSTANCE, PTP_CLEANUP_GROUP, PTP_IO, PTP_POOL, PTP_POOL_STACK_INFORMATION, PTP_SIMPLE_CALLBACK, PTP_TIMER, PTP_TIMER_CALLBACK, PTP_WAIT, PTP_WAIT_CALLBACK, PTP_WORK, PTP_WORK_CALLBACK, PVOID, }; FN!{stdcall PTP_WIN32_IO_CALLBACK( Instance: PTP_CALLBACK_INSTANCE, Context: PVOID, Overlapped: PVOID, IoResult: ULONG, NumberOfBytesTransferred: ULONG_PTR, Io: PTP_IO, ) -> ()} extern "system" { pub fn CreateThreadpool( reserved: PVOID, ) -> PTP_POOL; pub fn SetThreadpoolThreadMaximum( ptpp: PTP_POOL, cthrdMost: DWORD, ) -> (); pub fn SetThreadpoolThreadMinimum( ptpp: PTP_POOL, cthrdMic: DWORD, ) -> BOOL; pub fn SetThreadpoolStackInformation( ptpp: PTP_POOL, ptpsi: PTP_POOL_STACK_INFORMATION, ) -> BOOL; pub fn QueryThreadpoolStackInformation( ptpp: PTP_POOL, ptpsi: PTP_POOL_STACK_INFORMATION, ) -> BOOL; pub fn CloseThreadpool( ptpp: PTP_POOL, ) -> (); pub fn CreateThreadpoolCleanupGroup() -> PTP_CLEANUP_GROUP; pub fn CloseThreadpoolCleanupGroupMembers( ptpcg: PTP_CLEANUP_GROUP, fCancelPendingCallbacks: BOOL, pvCleanupContext: PVOID, ) -> (); pub fn CloseThreadpoolCleanupGroup( ptpcg: PTP_CLEANUP_GROUP, ) -> (); pub fn SetEventWhenCallbackReturns( pci: PTP_CALLBACK_INSTANCE, evt: HANDLE, ) -> (); pub fn ReleaseSemaphoreWhenCallbackReturns( pci: PTP_CALLBACK_INSTANCE, sem: HANDLE, crel: DWORD, ) -> (); pub fn ReleaseMutexWhenCallbackReturns( pci: PTP_CALLBACK_INSTANCE, mut_: HANDLE, ) -> (); pub fn LeaveCriticalSectionWhenCallbackReturns( pci: PTP_CALLBACK_INSTANCE, pcs: PCRITICAL_SECTION, ) -> (); pub fn FreeLibraryWhenCallbackReturns( pci: PTP_CALLBACK_INSTANCE, mod_: HMODULE, ) -> (); pub fn CallbackMayRunLong( pci: PTP_CALLBACK_INSTANCE, ) -> BOOL; pub fn DisassociateCurrentThreadFromCallback( pci: PTP_CALLBACK_INSTANCE, ) -> (); pub fn TrySubmitThreadpoolCallback( pfns: PTP_SIMPLE_CALLBACK, pv: PVOID, pcbe: PTP_CALLBACK_ENVIRON, ) -> BOOL; pub fn CreateThreadpoolWork( pfnwk: PTP_WORK_CALLBACK, pv: PVOID, pcbe: PTP_CALLBACK_ENVIRON, ) -> PTP_WORK; pub fn SubmitThreadpoolWork( pwk: PTP_WORK, ) -> (); pub fn WaitForThreadpoolWorkCallbacks( pwk: PTP_WORK, fCancelPendingCallbacks: BOOL, ) -> (); pub fn CloseThreadpoolWork( pwk: PTP_WORK, ) -> (); pub fn CreateThreadpoolTimer( pfnti: PTP_TIMER_CALLBACK, pv: PVOID, pcbe: PTP_CALLBACK_ENVIRON, ) -> PTP_TIMER; pub fn SetThreadpoolTimer( pti: PTP_TIMER, pftDueTime: PFILETIME, msPeriod: DWORD, msWindowLength: DWORD, ) -> (); pub fn IsThreadpoolTimerSet( pti: PTP_TIMER, ) -> BOOL; pub fn WaitForThreadpoolTimerCallbacks( pti: PTP_TIMER, fCancelPendingCallbacks: BOOL, ) -> (); pub fn CloseThreadpoolTimer( pti: PTP_TIMER, ) -> (); pub fn CreateThreadpoolWait( pfnwa: PTP_WAIT_CALLBACK, pv: PVOID, pcbe: PTP_CALLBACK_ENVIRON, ) -> PTP_WAIT; pub fn SetThreadpoolWait( pwa: PTP_WAIT, h: HANDLE, pftTimeout: PFILETIME, ) -> (); pub fn WaitForThreadpoolWaitCallbacks( pwa: PTP_WAIT, fCancelPendingCallbacks: BOOL, ) -> (); pub fn CloseThreadpoolWait( pwa: PTP_WAIT, ) -> (); pub fn CreateThreadpoolIo( fl: HANDLE, pfnio: PTP_WIN32_IO_CALLBACK, pv: PVOID, pcbe: PTP_CALLBACK_ENVIRON, ) -> PTP_IO; pub fn StartThreadpoolIo( pio: PTP_IO, ) -> (); pub fn CancelThreadpoolIo( pio: PTP_IO, ) -> (); pub fn WaitForThreadpoolIoCallbacks( pio: PTP_IO, fCancelPendingCallbacks: BOOL, ) -> (); pub fn CloseThreadpoolIo( pio: PTP_IO, ) -> (); pub fn SetThreadpoolTimerEx( pti: PTP_TIMER, pftDueTime: PFILETIME, msPeriod: DWORD, msWindowLength: DWORD, ) -> BOOL; pub fn SetThreadpoolWaitEx( pwa: PTP_WAIT, h: HANDLE, pftTimeout: PFILETIME, Reserved: PVOID, ) -> BOOL; }