public static TransactionSubcommand GetSubcommandRequest(byte[] setup, byte[] parameters, byte[] data, bool isUnicode)
        {
            if (setup.Length == 4)
            {
                TransactionSubcommandName subcommandName = (TransactionSubcommandName)LittleEndianConverter.ToUInt16(setup, 0);
                switch (subcommandName)
                {
                case TransactionSubcommandName.TRANS_SET_NMPIPE_STATE:
                    return(new TransactionSetNamedPipeStateRequest(setup, parameters));

                case TransactionSubcommandName.TRANS_RAW_READ_NMPIPE:
                    return(new TransactionRawReadNamedPipeRequest(setup));

                case TransactionSubcommandName.TRANS_QUERY_NMPIPE_STATE:
                    return(new TransactionQueryNamedPipeStateRequest(setup, parameters));

                case TransactionSubcommandName.TRANS_QUERY_NMPIPE_INFO:
                    return(new TransactionQueryNamedPipeInfoRequest(setup, parameters));

                case TransactionSubcommandName.TRANS_PEEK_NMPIPE:
                    return(new TransactionPeekNamedPipeRequest(setup));

                case TransactionSubcommandName.TRANS_TRANSACT_NMPIPE:
                    return(new TransactionTransactNamedPipeRequest(setup, data));

                case TransactionSubcommandName.TRANS_RAW_WRITE_NMPIPE:
                    return(new TransactionRawWriteNamedPipeRequest(setup, data));

                case TransactionSubcommandName.TRANS_READ_NMPIPE:
                    return(new TransactionReadNamedPipeRequest(setup));

                case TransactionSubcommandName.TRANS_WRITE_NMPIPE:
                    return(new TransactionWriteNamedPipeRequest(setup, data));

                case TransactionSubcommandName.TRANS_WAIT_NMPIPE:
                    return(new TransactionWaitNamedPipeRequest(setup));

                case TransactionSubcommandName.TRANS_CALL_NMPIPE:
                    return(new TransactionCallNamedPipeRequest(setup, data));
                }
            }
            else if (setup.Length == 0 && data.Length == 0)
            {
                // [MS-RAP] Remote Administration Protocol request
                throw new NotImplementedException("Remote Administration Protocol request");
            }
            throw new InvalidRequestException();
        }
Exemple #2
0
        public static TransactionSubcommand GetSubcommandRequest(byte[] setup, byte[] parameters, byte[] data)
        {
            if (setup.Length == 4)
            {
                TransactionSubcommandName subcommandName = (TransactionSubcommandName)LittleEndianConverter.ToUInt16(setup, 0);
                switch (subcommandName)
                {
                case TransactionSubcommandName.TRANS_SET_NMPIPE_STATE:
                    return(new TransactionSetNamedPipeStateRequest(setup, parameters));

                case TransactionSubcommandName.TRANS_RAW_READ_NMPIPE:
                    return(new TransactionRawReadNamedPipeRequest(setup));

                case TransactionSubcommandName.TRANS_QUERY_NMPIPE_STATE:
                    return(new TransactionQueryNamedPipeStateRequest(setup));

                case TransactionSubcommandName.TRANS_QUERY_NMPIPE_INFO:
                    return(new TransactionQueryNamedPipeInfoRequest(setup, parameters));

                case TransactionSubcommandName.TRANS_PEEK_NMPIPE:
                    return(new TransactionPeekNamedPipeRequest(setup));

                case TransactionSubcommandName.TRANS_TRANSACT_NMPIPE:
                    return(new TransactionTransactNamedPipeRequest(setup, data));

                case TransactionSubcommandName.TRANS_RAW_WRITE_NMPIPE:
                    return(new TransactionRawWriteNamedPipeRequest(setup, data));

                case TransactionSubcommandName.TRANS_READ_NMPIPE:
                    return(new TransactionReadNamedPipeRequest(setup));

                case TransactionSubcommandName.TRANS_WRITE_NMPIPE:
                    return(new TransactionWriteNamedPipeRequest(setup, data));

                case TransactionSubcommandName.TRANS_WAIT_NMPIPE:
                    return(new TransactionWaitNamedPipeRequest(setup));

                case TransactionSubcommandName.TRANS_CALL_NMPIPE:
                    return(new TransactionCallNamedPipeRequest(setup, data));
                }
            }
            throw new InvalidDataException();
        }