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(); }
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(); }