/************************************************************************* * TASK1.C * * Routines used to enumerate all tasks. * *************************************************************************/ #include #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); }