Changeset 7032 for trunk/src/kernel32/oslibdos.cpp
- Timestamp:
- Oct 12, 2001, 8:10:59 PM (24 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/kernel32/oslibdos.cpp
r6988 r7032 1 /* $Id: oslibdos.cpp,v 1.7 6 2001-10-10 16:03:27phaller Exp $ */1 /* $Id: oslibdos.cpp,v 1.77 2001-10-12 18:10:59 phaller Exp $ */ 2 2 /* 3 3 * Wrappers for OS/2 Dos* API … … 2583 2583 { 2584 2584 APIRET rc; 2585 PVOID pTiledParm = pParm; 2586 BOOL flagTiledParm = FALSE; 2587 PVOID pTiledData = pData; 2588 BOOL flagTiledData = FALSE; 2589 2590 #define MEM_TILED_CEILING 0x1fffffff 2591 2592 // bounce buffer support 2593 if ( (DWORD)pTiledParm > MEM_TILED_CEILING) 2594 { 2595 rc = DosAllocMem(&pTiledParm, dwParmMaxLen, PAG_READ | PAG_WRITE); 2596 if (rc) 2597 goto _exit_ioctl; 2598 2599 flagTiledParm = TRUE; 2600 } 2601 2602 if ( (DWORD)pTiledData > MEM_TILED_CEILING) 2603 { 2604 rc = DosAllocMem(&pTiledData, dwDataMaxLen, PAG_READ | PAG_WRITE); 2605 if (rc) 2606 goto _exit_ioctl; 2607 2608 flagTiledData = TRUE; 2609 } 2585 2610 2586 2611 rc = DosDevIOCtl( (HFILE)hFile, dwCat, dwFunc, 2587 2612 pParm, dwParmMaxLen, pdwParmLen, 2588 2613 pData, dwDataMaxLen, pdwDataLen); 2589 2614 2615 // copy data from bounce buffers to real 2616 // target buffers if necessary 2617 if (pTiledParm != pParm) 2618 memcpy(pParm, pTiledParm, *pdwParmLen); 2619 2620 if (pTiledData != pData) 2621 memcpy(pData, pTiledData, *pdwDataLen); 2622 2623 2624 _exit_ioctl: 2625 2626 // deallocate bounce buffers 2627 if (flagTiledParm) 2628 DosFreeMem(pTiledParm); 2629 2630 if (flagTiledData) 2631 DosFreeMem(pTiledData); 2632 2590 2633 SetLastError(error2WinError(rc,ERROR_INVALID_HANDLE)); 2591 2634 return (DWORD)rc;
Note:
See TracChangeset
for help on using the changeset viewer.