Changeset 57 for trunk/src/helpers/procstat.c
- Timestamp:
- Apr 9, 2001, 10:50:16 PM (24 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/helpers/procstat.c
r44 r57 84 84 * 85 85 *@@added V0.9.3 (2000-05-05) [umoeller] 86 */ 87 88 PQPROCSTAT16 prc16GetInfo(APIRET *parc) // out: error, ptr can be NULL 86 *@@changed V0.9.10 (2001-04-08) [umoeller]: this returned != NULL even though item was freed, fixed 87 *@@changed V0.9.10 (2001-04-08) [umoeller]: now using DosAllocMem, raised bufsize, changed prototype 88 */ 89 90 APIRET prc16GetInfo(PQPROCSTAT16 *ppps) // out: error, ptr can be NULL 89 91 { 90 92 APIRET arc = NO_ERROR; 91 PQPROCSTAT16 pps = (PQPROCSTAT16)malloc(0x8000); 93 PQPROCSTAT16 pps = NULL; 94 95 /* PQPROCSTAT16 pps = (PQPROCSTAT16)malloc(0x8000); 92 96 if (!pps) 93 97 arc = ERROR_NOT_ENOUGH_MEMORY; 94 else 95 { 96 arc = DosQProcStatus(pps, 0x8000); 97 if (arc != NO_ERROR) 98 free(pps); 99 } 100 101 if (parc) 102 *parc = arc; 103 104 return (pps); 98 else */ 99 100 if (!ppps) 101 return (ERROR_INVALID_PARAMETER); 102 103 // changed allocation V0.9.10 (2001-04-08) [umoeller]: 104 // malloc didn't guarantee that the object did not 105 // cross a 64K boundary, which could cause DosQProcStat 106 // to fail... 107 #define BUF_SIZE 0xFFFF // raised from 0x8000 108 109 if (!(arc = DosAllocMem((VOID**)&pps, 110 BUF_SIZE, 111 PAG_READ | PAG_WRITE | PAG_COMMIT 112 | OBJ_TILE // 16-bit compatible, ignored really 113 ))) 114 { 115 if (arc = DosQProcStatus(pps, BUF_SIZE)) 116 { 117 // error: 118 DosFreeMem(pps); // V0.9.10 (2001-04-08) [umoeller] 119 120 // and even worse, I forgot to set the return ptr 121 // to NULL, so this was freed twice... I guess 122 // this produced the crashes in WarpIN with the 123 // KILLPROCESS attribute... V0.9.10 (2001-04-08) [umoeller] 124 pps = NULL; 125 } 126 } 127 128 *ppps = pps; 129 130 return (arc); 105 131 } 106 132 … … 110 136 * 111 137 *@@added V0.9.3 (2000-05-05) [umoeller] 112 */ 113 114 VOID prc16FreeInfo(PQPROCSTAT16 pInfo) 115 { 116 if (pInfo) 117 free(pInfo); 138 *@@changed V0.9.10 (2001-04-08) [umoeller]: now using DosFreeMem 139 */ 140 141 APIRET prc16FreeInfo(PQPROCSTAT16 pInfo) 142 { 143 if (!pInfo) 144 return ERROR_INVALID_PARAMETER; 145 146 return DosFreeMem(pInfo); 118 147 } 119 148 … … 476 505 *@@added V0.9.1 (2000-02-12) [umoeller] 477 506 *@@changed V0.9.3 (2000-05-01) [umoeller]: now using DosAllocMem 507 *@@changed V0.9.10 (2001-04-08) [umoeller]: fixed second QuerySysState param 478 508 */ 479 509 480 510 PQTOPLEVEL32 prc32GetInfo(APIRET *parc) // out: error, ptr can be NULL 481 511 { 482 #define BUFSIZE 128000l512 #define BUFSIZE (256 * 1024) // 128000l 483 513 PCHAR pBuf = NULL; // (PCHAR)malloc(BUFSIZE); 484 514 … … 489 519 if (pBuf) 490 520 { 491 APIRET arc = DosQuerySysState(0x1f, 492 0, 0, 0, 521 APIRET arc = DosQuerySysState(QS32_SUPPORTED, 522 QS32_SUPPORTED, // this was missing 523 // V0.9.10 (2001-04-08) [umoeller] 524 0, 0, 493 525 (PCHAR)pBuf, 494 526 BUFSIZE); … … 528 560 { 529 561 PQPROCESS32 pProcThis = pInfo->pProcessData; 530 while (pProcThis && pProcThis-> rectype == 1)562 while (pProcThis && pProcThis->ulRecType == 1) 531 563 { 532 564 int i; … … 561 593 } 562 594 563 if (pProcThis-> rectype == 1)595 if (pProcThis->ulRecType == 1) 564 596 return (pProcThis); 565 597 else … … 578 610 */ 579 611 580 PQS EMA32prc32FindSem16(PQTOPLEVEL32 pInfo, // in: as returned by prc32GetInfo612 PQS32SEM16 prc32FindSem16(PQTOPLEVEL32 pInfo, // in: as returned by prc32GetInfo 581 613 USHORT usSemID) // in: as in QPROCESS32.pausSem16 582 614 { 583 PQSEM16STRUC32 pSemData = pInfo->pSem16Data; 584 PQSEMA32 pSemThis = &pSemData->sema; 585 ULONG i = 0; 615 PQS32SEM16HEAD pSemHead = pInfo->pSem16Data; 616 PQS32SEM16 // pSemThis = &pSemData->sema; 617 pSemThis = &pSemHead->Sem16Rec; 618 ULONG i = 0; 586 619 587 620 while (pSemThis) 588 621 { 589 _Pmpf(("prc32FindSem16: found usIndex 0x%lX", pSemThis->usIndex)); 590 if (/* pSemThis->usIndex */ i == usSemID) 622 if (i == usSemID) 591 623 return (pSemThis); 592 624 … … 610 642 */ 611 643 612 PQS EM32STRUC32 prc32FindSem32(PQTOPLEVEL32 pInfo, // in: as returned by prc32GetInfo613 644 PQS32SEM32 prc32FindSem32(PQTOPLEVEL32 pInfo, // in: as returned by prc32GetInfo 645 USHORT usSemID) // in: as in QPROCESS32.pausSem16 614 646 { 615 647 // PQSEM32STRUC32 pSemThis = pInfo->pSem32Data; … … 687 719 PQFILEDATA32 pFile = pInfo->pFileData; 688 720 while ( (pFile) 689 && (pFile-> rectype == 8) // this is necessary, we'll crash otherwise!!721 && (pFile->ulRecType == 8) // this is necessary, we'll crash otherwise!! 690 722 ) 691 723 { 692 if (pFile->filedata->sfn == usFileID) 724 ULONG ul; 725 // for some reason, there is an array in the file struct, 726 // so search the array for the SFN 727 for (ul = 0; 728 ul < pFile->ulCFiles; 729 ul++) 730 { 731 if (pFile->paFiles[ul].usSFN == usFileID) 693 732 return (pFile); 733 } 694 734 695 735 pFile = pFile->pNext;
Note:
See TracChangeset
for help on using the changeset viewer.