windows-nt/Source/XPSP1/NT/inetsrv/iis/inc/issched.hxx
2020-09-26 16:20:57 +08:00

118 lines
2.8 KiB
C++

/*++
Copyright (c) 1995-1996 Microsoft Corporation
Module Name :
issched.hxx
Abstract:
This header file declares schedulable work item and functions for
scheduling work items. These work items execute (once or periodically)
on a set of worker threads maintained by the scheduler
Author:
Murali R. Krishnan ( MuraliK ) 31-July-1995
Environment:
Win32 -- User Mode
Project:
Internet Information Services RunTime Library DLL
Revision History:
--*/
# ifndef _ISSCHED_HXX_
# define _ISSCHED_HXX_
/************************************************************
* Include Headers
************************************************************/
# include <windows.h>
# include <timer.h>
/************************************************************
* Type Definitions
************************************************************/
//
// The callback functions you provide must have this signature
//
typedef
VOID
(WINAPI * PFN_SCHED_CALLBACK)(
IN OUT PVOID pContext
);
//
// Typically, you use the Scheduler like this:
// g_dwCookie = ScheduleWorkItem(MyCallback, &ctxt, 30 * 1000);
//
// VOID
// MyCallback(
// VOID* pvContext)
// {
// g_dwCookie = 0; // free the cookie
// CContext* pctxt = (CContext*) pvContext;
// // whatever...
// }
//
// If you need to cleanup, possibly before the scheduler has been
// called, do this
// if (g_dwCookie != 0)
// {
// RemoveWorkItem(g_dwCookie);
// g_dwCookie = 0;
// }
// Effective with IIS 5.0, the scheduler is part of the IISRTL module.
// IISRTL takes care of init/cleanup business of the scheduler, but you
// must make sure to call InitializeIISRTL() and TerminateIISRTL() from
// your own code if you want to use the scheduler APIs. Note: these
// initialization/termination routines must *not* be called from your DllMain
// if you want to avoid deadlocks. (DllMains are not re-entrant, so you cannot
// create or shut down threads within them.)
// Schedule a work item. For COM uses, note that the worker thread has been
// CoInitialized as COINIT_MULTITHREADED. Returns a unique cookie that can
// be used as the parameter to ScheduleAdjustTime and RemoveWorkItem.
DWORD
WINAPI
ScheduleWorkItem(
IN PFN_SCHED_CALLBACK pfnCallback,
IN PVOID pContext,
IN DWORD msecTimeInterval, // delta
IN BOOL fPeriodic = FALSE
);
// Adjust the execution time of an already-scheduled workitem
DWORD
WINAPI
ScheduleAdjustTime(
IN DWORD dwCookie, // as returned by ScheduleWorkItem
IN DWORD msecNewTime // delta
);
BOOL
WINAPI
RemoveWorkItem(
IN DWORD dwCookie // as returned by ScheduleWorkItem
);
# endif // _ISSCHED_HXX_
/************************ End of File ***********************/