blob: 13a1e7a40e0846350b90f9a34e771599b7e9be45 [file] [log] [blame]
// Licensed under the Apache License, Version 2.0
// <LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
// <LICENSE-MIT or http://opensource.org/licenses/MIT>, 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;
}