home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
OS/2 Shareware BBS: 10 Tools
/
10-Tools.zip
/
cset21v6.zip
/
MMPM2TK
/
TK
/
FSSHT
/
FSSHASS.C
< prev
next >
Wrap
C/C++ Source or Header
|
1993-02-25
|
6KB
|
107 lines
/****************************************************************************/
/* */
/* Copyright (c) IBM Corporation 1992, 1993 */
/* All Rights Reserved */
/* */
/* SOURCE FILE NAME: FSSHASS.C */
/* */
/* DESCRIPTIVE NAME: File System Stream Handler Associate routine */
/* */
/* FUNCTION: This function is associates the given object with the */
/* specified stream. */
/* */
/* ENTRY POINTS: ShcAssociate */
/* */
/*************************** END OF SPECIFICATIONS **************************/
#define INCL_NOPMAPI /* no PM include files required */
#define INCL_DOSSEMAPHORES
#define INCL_DOSPROCESS
#define INCL_DOSERRORS
#include <os2.h>
#include <os2me.h>
#include <hhpheap.h>
#include <shi.h>
/************************** START OF SPECIFICATIONS *************************/
/* */
/* SUBROUTINE NAME: ShcAssociate */
/* */
/* DESCRIPTIVE NAME: Stream Handler Command Associate Object routine */
/* */
/* FUNCTION: Associates the object passed with the specified stream */
/* */
/* NOTES: */
/* */
/* ENTRY POINT: ShcAssociate */
/* LINKAGE: CALL NEAR (0:32) */
/* */
/* INPUT: Pointer to shc associate parameter block (PARM_ASSOC) containing: */
/* ULONG ulFunction Handler command function SHC_ASSOCIATE */
/* HID hid handler ID */
/* HSTREAM hstream handle of stream instance */
/* PACB pacb pointer to associate control block */
/* */
/* EXIT-NORMAL: NO_ERROR (0) */
/* */
/* EXIT-ERROR: */
/* ERROR_INVALID_OBJECT */
/* ERROR_INVALID_BUFFER_SIZE */
/* ERROR_INVALID_SEQUENCE */
/* */
/* SIDE EFFECTS: */
/* */
/* INTERNAL REFERENCES: */
/* ROUTINES: None */
/* */
/* EXTERNAL REFERENCES: */
/* ROUTINES: */
/* ShFindSib */
/* */
/* DATA STRUCTURES: */
/* hmtxGlobalData */
/* sib */
/* */
/*************************** END OF SPECIFICATIONS **************************/
RC ShcAssociate(pasparm)
PPARM_ASSOC pasparm;
{ /* Start of ShcAssociate */
RC rc = NO_ERROR; /* local return code */
PSIB psib; /* Stream instance block */
/*
* Find our Stream Instance Block
*/
if (!(rc = ShFindSib(&psib, pasparm->hstream, pasparm->hid)))
{ /* We have SIB */
if (!(psib->ulActionFlags & SIBACTFLG_THREAD_DEAD))
{ /* validate ObjType */
if (pasparm->pacb->ulObjType != ACBTYPE_MMIO)
{
rc = ERROR_INVALID_OBJTYPE;
}
else
{
if (pasparm->pacb->ulACBLen < sizeof(ACB_MMIO))
{
rc = ERROR_INVALID_BUFFER_SIZE;
}
else
{
psib->ulAssocP1 = pasparm->pacb->ulParm1;
psib->ulStatus = SIB_RUNNING;
}
}
} /* validate ObjType */
else
{
rc = ERROR_INVALID_SEQUENCE;
}
} /* We have SIB */
return(rc);
} /* End of ShcAssociate */