예제 #1
0
 public NTTransactNotifyChangeRequest(byte[] setup) : base()
 {
     CompletionFilter = (CompletionFilter)LittleEndianConverter.ToUInt32(setup, 0);
     FID       = LittleEndianConverter.ToUInt16(setup, 4);
     WatchTree = (ByteReader.ReadByte(setup, 6) != 0);
     Reserved  = ByteReader.ReadByte(setup, 7);
 }
예제 #2
0
파일: FilterSet.cs 프로젝트: dagood/roslyn
        static FilterSet()
        {
            var mapBuilder   = ImmutableDictionary.CreateBuilder <string, FilterWithMask>();
            var arrayBuilder = ImmutableArray.CreateBuilder <FilterWithMask>();

            var previousMask = 0;

            NamespaceFilter         = CreateCompletionFilterAndAddToBuilder(FeaturesResources.Namespaces, 'n', WellKnownTags.Namespace);
            ClassFilter             = CreateCompletionFilterAndAddToBuilder(FeaturesResources.Classes, 'c', WellKnownTags.Class);
            ModuleFilter            = CreateCompletionFilterAndAddToBuilder(FeaturesResources.Modules, 'u', WellKnownTags.Module);
            StructureFilter         = CreateCompletionFilterAndAddToBuilder(FeaturesResources.Structures, 's', WellKnownTags.Structure);
            InterfaceFilter         = CreateCompletionFilterAndAddToBuilder(FeaturesResources.Interfaces, 'i', WellKnownTags.Interface);
            EnumFilter              = CreateCompletionFilterAndAddToBuilder(FeaturesResources.Enums, 'e', WellKnownTags.Enum);
            DelegateFilter          = CreateCompletionFilterAndAddToBuilder(FeaturesResources.Delegates, 'd', WellKnownTags.Delegate);
            ConstantFilter          = CreateCompletionFilterAndAddToBuilder(FeaturesResources.Constants, 'o', WellKnownTags.Constant);
            FieldFilter             = CreateCompletionFilterAndAddToBuilder(FeaturesResources.Fields, 'f', WellKnownTags.Field);
            EventFilter             = CreateCompletionFilterAndAddToBuilder(FeaturesResources.Events, 'v', WellKnownTags.Event);
            PropertyFilter          = CreateCompletionFilterAndAddToBuilder(FeaturesResources.Properties, 'p', WellKnownTags.Property);
            MethodFilter            = CreateCompletionFilterAndAddToBuilder(FeaturesResources.Methods, 'm', WellKnownTags.Method);
            ExtensionMethodFilter   = CreateCompletionFilterAndAddToBuilder(FeaturesResources.Extension_methods, 'x', WellKnownTags.ExtensionMethod);
            OperatorFilter          = CreateCompletionFilterAndAddToBuilder(FeaturesResources.Operators, 'r', WellKnownTags.Operator);
            LocalAndParameterFilter = CreateCompletionFilterAndAddToBuilder(FeaturesResources.Locals_and_parameters, 'l', WellKnownTags.Local, WellKnownTags.Parameter);
            KeywordFilter           = CreateCompletionFilterAndAddToBuilder(FeaturesResources.Keywords, 'k', WellKnownTags.Keyword);
            SnippetFilter           = CreateCompletionFilterAndAddToBuilder(FeaturesResources.Snippets, 't', WellKnownTags.Snippet);
            TargetTypedFilter       = CreateCompletionFilterAndAddToBuilder(FeaturesResources.Target_type_matches, 'j', WellKnownTags.TargetTypeMatch);

            s_filterMap = mapBuilder.ToImmutable();
            s_filters   = arrayBuilder.ToImmutable();

            s_expanderMask = BitVector32.CreateMask(previousMask);

            var addImageId = Shared.Extensions.GlyphExtensions.GetImageCatalogImageId(KnownImageIds.ExpandScope);

            Expander = new CompletionExpander(
                EditorFeaturesResources.Expander_display_text,
                accessKey: "a",
                new ImageElement(addImageId, EditorFeaturesResources.Expander_image_element));

            CompletionFilter CreateCompletionFilterAndAddToBuilder(string displayText, char accessKey, params string[] tags)
            {
                var filter = CreateCompletionFilter(displayText, tags, accessKey);

                previousMask = BitVector32.CreateMask(previousMask);

                var filterWithMask = new FilterWithMask(filter, previousMask);

                arrayBuilder.Add(filterWithMask);

                foreach (var tag in tags)
                {
                    mapBuilder.Add(tag, filterWithMask);
                }

                return(filter);
            }
        }
예제 #3
0
 public FilterWithMask(CompletionFilter filter, int mask)
 {
     Filter = filter;
     Mask   = mask;
 }
 /// <summary>
 /// to create a NtTransactNotifyChange request packet.
 /// </summary>
 /// <param name="uid">This field SHOULD identify the authenticated instance of the user.</param>
 /// <param name="treeId">This field identifies the subdirectory (or tree) on the server that the client is
 /// accessing.</param>
 /// <param name="fid">MUST contain a valid FID obtained from a previously successful SMB open command.</param>
 /// <param name="filter">Specify the types of operations to monitor.</param> 
 /// <param name="watchTree">BOOLEAN If all subdirectories are to be watched, then set this to TRUE; otherwise,
 /// FALSE.</param>
 /// <returns>a NtTransactNotifyChange request packet</returns>
 /// <exception cref="System.NullReferenceException">There is no connection in context. </exception>
 public SmbNtTransactNotifyChangeRequestPacket CreateNtTransactNotifyChangeRequest(
     ushort uid,
     ushort treeId,
     ushort fid,
     CompletionFilter filter,
     bool watchTree)
 {
     return this.CreateNtTransactNotifyChangeRequest(this.Context.GetMessageId(this.connectionId),
         uid, treeId, this.defaultParameters.Flag, this.defaultParameters.Flag2, this.defaultParameters.MaxSetupCount,
         this.defaultParameters.MaxParameterCount, this.defaultParameters.MaxDataCount, fid, filter, watchTree);
 }
        /// <summary>
        /// to create a NtTransactNotifyChange request packet.
        /// </summary>
        /// <param name="messageId">This field SHOULD be the multiplex ID that is used to associate a response with a
        /// request.</param>
        /// <param name="uid">This field SHOULD identify the authenticated instance of the user.</param>
        /// <param name="treeId">This field identifies the subdirectory (or tree) on the server that the client is
        /// accessing.</param>
        /// <param name="flags">An 8-bit field of 1-bit flags describing various features in effect for the
        /// message</param>
        /// <param name="flags2">A 16-bit field of 1-bit flags that represent various features in effect for the
        /// message. Unspecified bits are reserved and MUST be zero.</param>
        /// <param name="maxParameterCount">The maximum number of parameter bytes that the client will accept in the
        /// transaction reply. The server MUST NOT return more than this number of parameter bytes.</param>
        /// <param name="maxDataCount">The maximum number of data bytes that the client will accept in the transaction
        /// reply. The server MUST NOT return more than this number of data bytes.</param>
        /// <param name="maxSetupCount">Maximum number of setup bytes that the client will accept in the transaction
        /// reply. The server MUST NOT return more than this number of setup bytes</param>
        /// <param name="fid">MUST contain a valid FID obtained from a previously successful SMB open command.</param>
        /// <param name="filter">Specify the types of operations to monitor.</param>
        /// <param name="watchTree">BOOLEAN If all subdirectories are to be watched, then set this to TRUE; otherwise,
        /// FALSE.</param>
        /// <returns>a NtTransactNotifyChange request packet</returns>
        public SmbNtTransactNotifyChangeRequestPacket CreateNtTransactNotifyChangeRequest(
            ushort messageId,
            ushort uid,
            ushort treeId,
            SmbFlags flags,
            SmbFlags2 flags2,
            byte maxSetupCount,
            uint maxParameterCount,
            uint maxDataCount,
            ushort fid,
            CompletionFilter filter,
            bool watchTree)
        {
            SmbNtTransactNotifyChangeRequestPacket packet = new SmbNtTransactNotifyChangeRequestPacket();
            packet.SmbHeader = CifsMessageUtils.CreateSmbHeader(SmbCommand.SMB_COM_NT_TRANSACT,
                messageId, uid, treeId, flags, flags2);

            // Set Smb_Parameters
            SMB_COM_NT_TRANSACT_Request_SMB_Parameters smbParameters =
                new SMB_COM_NT_TRANSACT_Request_SMB_Parameters();
            smbParameters.MaxSetupCount = maxSetupCount;
            smbParameters.MaxParameterCount = maxParameterCount;
            smbParameters.MaxDataCount = maxDataCount;
            smbParameters.SetupCount = 4; // the cout of Setup is 4.
            smbParameters.Function = NtTransSubCommand.NT_TRANSACT_NOTIFY_CHANGE;
            NT_TRANSACT_NOTIFY_SETUP setupStruct = new NT_TRANSACT_NOTIFY_SETUP();
            setupStruct.filter = filter;
            setupStruct.Fid = fid;
            setupStruct.WatchTree = (byte)(watchTree ? 1 : 0);
            smbParameters.Setup = CifsMessageUtils.ToTypeArray<ushort>(CifsMessageUtils.ToBytes<NT_TRANSACT_NOTIFY_SETUP
                >(setupStruct));
            smbParameters.WordCount = (byte)(CifsMessageUtils.GetSize<SMB_COM_NT_TRANSACT_Request_SMB_Parameters>(
                smbParameters) / NumBytesOfWord);

            // Set Smb_Data
            SMB_COM_NT_TRANSACT_Request_SMB_Data smbData = new SMB_COM_NT_TRANSACT_Request_SMB_Data();

            packet.SmbParameters = smbParameters;
            packet.SmbData = smbData;
            packet.UpdateCountAndOffset();

            return packet;
        }