code: public InputStream getNamedPipeInputStream() throws IOException {
          if( pipeIn == null ) {
              if(( pipeType & PIPE_TYPE_CALL ) == PIPE_TYPE_CALL ||
                      ( pipeType & PIPE_TYPE_TRANSACT ) == PIPE_TYPE_TRANSACT ) {
                  pipeIn = new TransactNamedPipeInputStream( this );
              } else {
                  pipeIn = new SmbFileInputStream(this,
                              (pipeType & 0xFFFF00FF) | SmbFile.O_EXCL);
              }
          }
          return pipeIn;
      }
docs: Return the <code>InputStream</code> used to read information
  from this pipe instance. Presumably data would first be written
  to the <code>OutputStream</code> associated with this Named
  Pipe instance although this is not a requirement (e.g. a
  read-only named pipe would write data to this stream on
  connection). Reading from this stream may block. Therefore it
  may be necessary that an addition thread be used to read and
  write to a Named Pipe.