home *** CD-ROM | disk | FTP | other *** search
/ Power Programmierung 2 / Power-Programmierung CD 2 (Tewi)(1994).iso / c / library / bcfamily / source / locks.cpp < prev    next >
Encoding:
C/C++ Source or Header  |  1993-06-12  |  1.3 KB  |  50 lines

  1. //
  2. //      *******************************************************************
  3. //        JdeBP C++ Library Routines          General Public Licence v1.00
  4. //            Copyright (c) 1991,1992     Jonathan de Boyne Pollard
  5. //      *******************************************************************
  6. //
  7. // Part of FamAPI.LIB
  8. //
  9.  
  10. #include "famapi.h"
  11. #include "dosdos.h"
  12.  
  13. #define OFFSET    0
  14. #define LENGTH    1
  15.  
  16. //
  17. //    Control record access
  18. //
  19. USHORT _APICALL
  20. DosFileLocks    ( unsigned short FileHandle,
  21.                   long far *PtrUnlockRange,
  22.                   long far *PtrLockRange )
  23. {
  24.     if (PtrUnlockRange) {
  25.         long FileOffset = PtrUnlockRange[OFFSET] ;
  26.         long RangeLength = PtrUnlockRange[LENGTH] ;
  27.         _DI = (USHORT)(RangeLength & 0xFFFF) ;
  28.         _SI = (USHORT)(RangeLength >> 16) ;
  29.         _DX = (USHORT)(FileOffset & 0xFFFF) ;
  30.         _CX = (USHORT)(FileOffset >> 16) ;
  31.         _BX = FileHandle ;
  32.         _AX = 0x5C01 ;
  33.         Dos3Call() ;
  34.         if (_FLAGS & 0x0001) return _AX ;
  35.     }
  36.     if (PtrLockRange) {
  37.         long FileOffset = PtrLockRange[OFFSET] ;
  38.         long RangeLength = PtrLockRange[LENGTH] ;
  39.         _DI = (USHORT)(RangeLength & 0xFFFF) ;
  40.         _SI = (USHORT)(RangeLength >> 16) ;
  41.         _DX = (USHORT)(FileOffset & 0xFFFF) ;
  42.         _CX = (USHORT)(FileOffset >> 16) ;
  43.         _BX = FileHandle ;
  44.         _AX = 0x5C00 ;
  45.         Dos3Call() ;
  46.         if (_FLAGS & 0x0001) return _AX ;
  47.     }
  48.     return NO_ERROR ;
  49. }
  50.