windows-nt/Source/XPSP1/NT/base/mvdm/wow16/toolhelp/task1.c
2020-09-26 16:20:57 +08:00

74 lines
1.8 KiB
C

/*************************************************************************
* TASK1.C
*
* Routines used to enumerate all tasks.
*
*************************************************************************/
#include <string.h>
#include "toolpriv.h"
/* ----- Functions ----- */
/* TaskFirst
* Returns information about the first task in the task chain.
*/
BOOL TOOLHELPAPI TaskFirst(
TASKENTRY FAR *lpTask)
{
/* Check for errors */
if (!wLibInstalled || !lpTask || lpTask->dwSize != sizeof (TASKENTRY))
return FALSE;
/* Pass a pointer to the first block to the assembly routine */
return TaskInfo(lpTask, *(WORD FAR *)MAKEFARPTR(segKernel, npwTDBHead));
}
/* TaskNext
* Returns information about the next task in the task chain.
*/
BOOL TOOLHELPAPI TaskNext(
TASKENTRY FAR *lpTask)
{
/* Check for errors */
if (!wLibInstalled || !lpTask || !lpTask->hNext ||
lpTask->dwSize != sizeof (TASKENTRY))
return FALSE;
/* Pass a pointer to the next block to the assembly routine */
return TaskInfo(lpTask, lpTask->hNext);
}
/* TaskFindHandle
* Returns information about the task with the given task handle.
*/
BOOL TOOLHELPAPI TaskFindHandle(
TASKENTRY FAR *lpTask,
HANDLE hTask)
{
/* Check for errors */
if (!wLibInstalled || !lpTask || lpTask->dwSize != sizeof (TASKENTRY))
return FALSE;
#ifdef WOW
if ( (hTask & 0x4) == 0 && hTask <= 0xffe0 && hTask != 0 ) {
//
// If they are getting a task handle for an htask alias, then
// just fill in the hinst method and return.
//
// Special hack for OLE 2.0's BusyDialog.
//
lpTask->hInst = hTask;
return( TRUE );
}
#endif
/* Pass a pointer to the first block to the assembly routine */
return TaskInfo(lpTask, hTask);
}