[Toc][Index]

FS_NMPIPE - Do a remote named pipe operation.

  
Purpose   
Perform a special purpose named pipe operation remotely. 
Calling Sequence   

int far pascal FS_NMPIPE(psffsi, psffsd, OpType, pOpRec, pData, pName)

struct sffsi far * psffsi;
struct sffsd far * psffsd;
unsigned short OpType;
union npoper far * pOpRec;
char far * pData;
char far * pName;


Where   
psffsi is a pointer to the file-system-independent portion of an open file 
instance. 
psffsd is a pointer to the file-system-dependent portion of an open file 
instance. 
OpType is the operation to be performed. This parameter has the following 
values: 

NMP_GetPHandState    0x21
NMP_SetPHandState    0x01
NMP_PipeQInfo        0x22
NMP_PeekPipe         0x23
NMP_ConnectPipe      0x24
NMP_DisconnectPipe   0x25
NMP_TransactPipe     0x26
NMP_ReadRaw          0x11
NMP_WriteRaw         0x31
NMP_WaitPipe         0x53
NMP_CallPipe         0x54
NMP_QNmPipeSemState  0x58


pOpRec is the data record which varies depending on the value of OpType. 
The first parameter in each structure encodes the length of the parameter 
block . The second parameter, if non-zero, indicates that the pData 
parameter is supplied and gives its length. The following record formats 
are used: 

union npoper {
    struct phs_param phs;
    struct npi_param npi;
    struct npr_param npr;
    struct npw_param npw;
    struct npq_param npq;
    struct npx_param npx;
    struct npp_param npp;
    struct npt_param npt;
    struct qnps_param qnps;
    struct npc_param npc;
    struct npd_param npd;
};

/* Get/SetPhandState parameter block */

struct phs_param {
    short phs_len;
    short phs_dlen;
    short phs_pmode; /* pipe mode set or returned */
};

/* DosQNmPipeInfo parameter block */
struct npi_param {
    short npi_len;
    short npi_dlen;
    short npi_level; /* information level desired */
};

/* DosRawReadNmPipe parameters */
/* data is buffer addr         */

struct npr_param {
    short npr_len;
    short npr_dlen;
    short npr_nbyt; /* number of bytes read */
};


/* DosRawWriteNmPipe parameters */
/* data is buffer addr          */

struct npw_param {
    short npw_len;
    short npw_dlen;
    short npw_nbyt; /* number of bytes written */
};

/* NPipeWait parameters */

struct npq_param {
    short npq_len;
    short npq_dlen;
    long npq_timeo;  /* time-out in milliseconds */
    short npq_prio;  /* priority of caller       */
};

/* DosCallNmPipe parameters */
/* data is in-buffer addr   */

struct npx_param {
    short npx_len;
    unsigned short npx_ilen;  /* length of in-buffer      */
    char far * npx_obuf;      /* pointer to out-buffer    */
    unsigned short npx_ilen;  /* length of out-buffer     */
    unsigned short npx_nbyt;  /* number of bytes read     */
    long npx_timeo;           /* time-out in milliseconds */
};

/* PeekPipe parameters, data is buffer addr */

struct npp_param {
    short npp_len;
    unsigned short npp_dlen;
    unsigned short npp_nbyt;   /* number of bytes read      */
    unsigned short npp_av10;   /* bytes left in pipe        */
    unsigned short npp_av11;   /* bytes left in current msg */
    unsigned short npp_state;  /* pipe state                */
};

/* DosTransactNmPipe parameters */
/* data is in-buffer addr       */

struct npt_param {
    short npt_len;
    unsigned short npt_ilen;  /* length of in-buffer   */
    char far * npt_obuf;      /* pointer to out-buffer */
    unsigned short npt_olen;  /* length of out-buffer  */
    unsigned short npt_nbyt;  /* number of bytes read  */
};

/* QNmPipeSemState parameter block */ /* data is user data buffer */

struct qnps_param {
    unsigned short qnps_len;  /* length of parameter block      */
    unsigned short qnps_dlen;  /* length of supplied data block */
    long qnps_semh;            /* system semaphore handle       */
    unsigned short qnps_nbyt;  /* number of bytes returned      */
};

/* ConnectPipe parameter block, no data block */

struct npc_param {
    unsigned short npc_len;   /* length of parameter block */
    unsigned short npc_dlen;  /* length of data block      */
};

/* DisconnectPipe parameter block, no data block */

struct npd_param {
    unsigned short npd_len;   /* length of parameter block */
    unsigned short npd_dlen;  /* length of data block      */
};


pData is a pointer to a user data for operations which require it. When 
the pointer is supplied, its length will be given by the second element of 
the pOpRec structure. 
pName is a pointer to a remote pipe name. Supplied only for NMP_WAITPIPE 
and NMP_CALLPIPE operations. For these two operations only, the psffsi and 
psffsd parameters have no significance. 
  
Remarks   
This entry point is for support of special remote named pipe operations. 
Not all pointer parameters are used for all operations. In cases where a 
particular pointer has no significance, it will be NULL. 
This entry point will be called only for the UNC FSD. Non-UNC FSDs are 
required to have this entry point, but should return NOT SUPPORTED if 
called. 

Created using Inf-PHP v.2 (c) 2003 Yuri Prokushev
Created using Inf-HTML v.0.9b (c) 1995 Peter Childs