home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / mmpm21tk.zip / TK / FSSHT / FSSHASS.C < prev    next >
C/C++ Source or Header  |  1993-02-25  |  6KB  |  107 lines

  1. /****************************************************************************/
  2. /*                                                                          */
  3. /*                    Copyright (c) IBM Corporation 1992, 1993              */
  4. /*                           All Rights Reserved                            */
  5. /*                                                                          */
  6. /* SOURCE FILE NAME: FSSHASS.C                                              */
  7. /*                                                                          */
  8. /* DESCRIPTIVE NAME:  File System Stream Handler Associate routine          */
  9. /*                                                                          */
  10. /* FUNCTION: This function is associates the given object with the          */
  11. /*           specified stream.                                              */
  12. /*                                                                          */
  13. /* ENTRY POINTS: ShcAssociate                                               */
  14. /*                                                                          */
  15. /*************************** END OF SPECIFICATIONS **************************/
  16. #define  INCL_NOPMAPI                  /* no PM include files required */
  17. #define  INCL_DOSSEMAPHORES
  18. #define  INCL_DOSPROCESS
  19. #define  INCL_DOSERRORS
  20. #include <os2.h>
  21. #include <os2me.h>
  22. #include <hhpheap.h>
  23. #include <shi.h>
  24.  
  25. /************************** START OF SPECIFICATIONS *************************/
  26. /*                                                                          */
  27. /* SUBROUTINE NAME: ShcAssociate                                            */
  28. /*                                                                          */
  29. /* DESCRIPTIVE NAME: Stream Handler Command Associate Object routine        */
  30. /*                                                                          */
  31. /* FUNCTION: Associates the object passed with the specified stream         */
  32. /*                                                                          */
  33. /* NOTES:                                                                   */
  34. /*                                                                          */
  35. /* ENTRY POINT: ShcAssociate                                                */
  36. /*   LINKAGE:   CALL NEAR (0:32)                                            */
  37. /*                                                                          */
  38. /* INPUT: Pointer to shc associate parameter block (PARM_ASSOC) containing: */
  39. /*   ULONG   ulFunction  Handler command function SHC_ASSOCIATE             */
  40. /*   HID     hid         handler ID                                         */
  41. /*   HSTREAM hstream     handle of stream instance                          */
  42. /*   PACB    pacb        pointer to associate control block                 */
  43. /*                                                                          */
  44. /* EXIT-NORMAL: NO_ERROR (0)                                                */
  45. /*                                                                          */
  46. /* EXIT-ERROR:                                                              */
  47. /*   ERROR_INVALID_OBJECT                                                   */
  48. /*   ERROR_INVALID_BUFFER_SIZE                                              */
  49. /*   ERROR_INVALID_SEQUENCE                                                 */
  50. /*                                                                          */
  51. /* SIDE EFFECTS:                                                            */
  52. /*                                                                          */
  53. /* INTERNAL REFERENCES:                                                     */
  54. /*        ROUTINES: None                                                    */
  55. /*                                                                          */
  56. /* EXTERNAL REFERENCES:                                                     */
  57. /*   ROUTINES:                                                              */
  58. /*     ShFindSib                                                            */
  59. /*                                                                          */
  60. /*   DATA STRUCTURES:                                                       */
  61. /*     hmtxGlobalData                                                       */
  62. /*     sib                                                                  */
  63. /*                                                                          */
  64. /*************************** END OF SPECIFICATIONS **************************/
  65.  
  66. RC ShcAssociate(pasparm)
  67. PPARM_ASSOC pasparm;
  68.  
  69. { /* Start of ShcAssociate */
  70.  
  71. RC rc = NO_ERROR;                       /* local return code */
  72. PSIB psib;                              /* Stream instance block */
  73.  
  74.   /*
  75.    * Find our Stream Instance Block
  76.    */
  77.   if (!(rc = ShFindSib(&psib, pasparm->hstream, pasparm->hid)))
  78.     { /* We have SIB */
  79.       if (!(psib->ulActionFlags & SIBACTFLG_THREAD_DEAD))
  80.         { /* validate ObjType */
  81.           if (pasparm->pacb->ulObjType != ACBTYPE_MMIO)
  82.             {
  83.               rc = ERROR_INVALID_OBJTYPE;
  84.             }
  85.           else
  86.             {
  87.               if (pasparm->pacb->ulACBLen < sizeof(ACB_MMIO))
  88.                 {
  89.                   rc = ERROR_INVALID_BUFFER_SIZE;
  90.                 }
  91.               else
  92.                 {
  93.                   psib->ulAssocP1 = pasparm->pacb->ulParm1;
  94.                   psib->ulStatus = SIB_RUNNING;
  95.                 }
  96.             }
  97.         } /* validate ObjType */
  98.       else
  99.         {
  100.           rc = ERROR_INVALID_SEQUENCE;
  101.         }
  102.     } /* We have SIB */
  103.  
  104.   return(rc);
  105.  
  106. } /* End of ShcAssociate */
  107.