/// <summary>
        /// Create TransQueryNamedPipeInfo request for client to query the information of named pipe. 
        /// </summary>
        /// <param name = "messageId">the id of message, used to identity the request and the server response. </param>
        /// <param name = "sessionUid">the valid session id, must be response by server of the session setup request. </param>
        /// <param name = "treeId">the valid tree connect id, must be response by server of the tree connect. </param>
        /// <param name = "flags">
        /// The Flags field contains individual flags, as specified in [CIFS] sections 2.4.2 and 3.1.1. 
        /// </param>
        /// <param name = "flags2">
        /// The Flags2 field contains individual bit flags that, depending on the negotiated SMB dialect, indicate   
        /// various client and server capabilities. 
        /// </param>
        /// <param name = "fileId">the valid file id to operation on, response by server. </param>
        /// <param name = "transactOptions">
        /// A set of bit flags that alter the behavior of the requested operation. Unused bit fields MUST be set to  
        /// zero by the client sending the request, and MUST be ignored by the server receiving the request. The 
        /// client MAY set either or both of the following bit flags 
        /// </param>
        /// <param name = "timeOut">
        /// The maximum amount of time in milliseconds to wait for the operation to complete. The client SHOULD set  
        /// this to 0 to indicate that no time-out is given. If the operation does not complete within the specified  
        /// time, the server MAY abort the request and send a failure response. 
        /// </param>
        /// <param name = "informationLevel">
        /// A USHORT value (as specified in [MS-DTYP] section 2.2.54) that describes the information level being  
        /// queried for the pipe. The only supported value is 0x0001. 
        /// </param>
        /// <returns>a query named pipe information request packet </returns>
        /// <exception cref="ArgumentException">The only supported value is 0x0001.</exception>
        private SmbTransQueryNmpipeInfoRequestPacket CreateTransQueryNamedPipeInfoRequest(
            ushort messageId,
            ushort sessionUid,
            ushort treeId,
            SmbHeader_Flags_Values flags,
            SmbHeader_Flags2_Values flags2,
            ushort fileId,
            TransSmbParametersFlags transactOptions,
            uint timeOut,
            NamedPipeInformationLevel informationLevel)
        {
            if (informationLevel != NamedPipeInformationLevel.VALID)
            {
                throw new ArgumentException("The only supported value is 0x0001.", "informationLevel");
            }

            return new SmbTransQueryNmpipeInfoRequestPacket(
                this.cifsClient.CreateTransQueryNmpipeInfoRequest(
                messageId, sessionUid, treeId, (SmbFlags)flags, (SmbFlags2)flags2,
                this.capability.MaxParameterCount, this.capability.MaxDataCount, this.capability.MaxSetupCount,
                transactOptions, timeOut, fileId, ""));
        }
 /// <summary>
 /// Create TransQueryNamedPipeInfo request for client to query the information of named pipe. 
 /// </summary>
 /// <param name = "fileId">the valid file id to operation on, response by server. </param>
 /// <param name = "transactOptions">
 /// A set of bit flags that alter the behavior of the requested operation. Unused bit fields MUST be set to  
 /// zero by the client sending the request, and MUST be ignored by the server receiving the request. The 
 /// client MAY set either or both of the following bit flags 
 /// </param>
 /// <param name = "informationLevel">
 /// A USHORT value (as specified in [MS-DTYP] section 2.2.54) that describes the information level being  
 /// queried for the pipe. The only supported value is 0x0001. 
 /// </param>
 /// <returns>a query named pipe information request packet </returns>
 public virtual SmbTransQueryNmpipeInfoRequestPacket CreateTransQueryNamedPipeInfoRequest(
     ushort fileId,
     TransSmbParametersFlags transactOptions,
     NamedPipeInformationLevel informationLevel)
 {
     return CreateTransQueryNamedPipeInfoRequest(
         this.MessageId,
         this.GetSessionIdByFileId(fileId), this.GetTreeIdByFileId(fileId), this.capability.Flag,
         this.capability.Flags2, fileId, transactOptions, 0, informationLevel);
 }