public object MarshalNativeToManaged(IntPtr pNativeData) { IEnumVARIANT ienumvariant = (IEnumVARIANT)Marshal.GetObjectForIUnknown(pNativeData); VARIANTEnumerator e = new VARIANTEnumerator(ienumvariant); return(e); }
public ComWrapperEnumerator(object source, Func <object, TWrapperItem> itemWrapper) { _itemWrapper = itemWrapper; if (source != null) { _enumeratorRCW = (IEnumVARIANT)IDispatchHelper.PropertyGet_NoArgs((IDispatch)source, (int)IDispatchHelper.StandardDispIds.DISPID_ENUM); ((IEnumerator)this).Reset(); // precaution } }
public static IEnumerable <T> ToEnumerable <T>(this IEnumVARIANT enumVariant, int count) { enumVariant.Reset(); var buffer = new object[count]; var bufferLengthPointer = Marshal.AllocCoTaskMem(Marshal.SizeOf(typeof(int))); enumVariant.Next(buffer.Length, buffer, bufferLengthPointer); var bufferLength = Marshal.ReadInt32(bufferLengthPointer); Marshal.FreeCoTaskMem(bufferLengthPointer); for (var i = 0; i < Math.Min(bufferLength, count); i++) { yield return((T)buffer[i]); } }
private IEnumerable<FirewallRulePayload> GetPayloads() { INetFwRules rules = _firewallPolicy.Rules; int count = rules.Count; IEnumVARIANT enumVARIANT = rules.get__NewEnum(); object[] obj = new object[1]; for (int i = 0; i < count; i++) { if (enumVARIANT.Next(1, obj, IntPtr.Zero) == 0) { var rule = (INetFwRule)obj[0]; if (!ShouldHandleRule(rule)) { continue; } FirewallRulePayload payload = new FirewallRulePayload(); payload.Action = rule.Action.ToIoTValue(); payload.Direction = rule.Direction.ToIoTValue(); payload.Enabled = rule.Enabled; payload.Application = rule.ApplicationName; payload.SourceAddress = rule.Direction == NET_FW_RULE_DIRECTION_.NET_FW_RULE_DIR_IN ? rule.RemoteAddresses : rule.LocalAddresses; payload.SourcePort = rule.Direction == NET_FW_RULE_DIRECTION_.NET_FW_RULE_DIR_IN ? rule.RemotePorts : rule.LocalPorts; payload.DestinationAddress = rule.Direction == NET_FW_RULE_DIRECTION_.NET_FW_RULE_DIR_IN ? rule.LocalAddresses : rule.RemoteAddresses; payload.DestinationPort = rule.Direction == NET_FW_RULE_DIRECTION_.NET_FW_RULE_DIR_IN ? rule.LocalPorts : rule.RemotePorts; payload.Protocol = ((FirewallRuleProtocol)rule.Protocol).ToString(); payload.Priority = null; payload.ExtraDetails = new Dictionary<string, string>() { { RuleNameExtraDetailsKey, rule.Name } }; yield return payload; } } }
public EnumeratorViewOfEnumVariant(IEnumVARIANT enumVariantObject) { _enumVariantObject = enumVariantObject; _fetchedLastObject = false; _current = null; }
public EnumeratorWrapper(IEnumVARIANT enumVariant) { this.enumVariant = enumVariant; }
public ComEnumerator(IEnumVARIANT enumVariant, Func <TSource, TTarget> resolveFunction) { _enumVariant = enumVariant; _resolveFunction = resolveFunction; _bufferLengthPointer = Marshal.AllocCoTaskMem(Marshal.SizeOf(typeof(int))); }
public VARIANTEnumerator (IEnumVARIANT com_enum) { this.com_enum = com_enum; }
public VARIANTEnumerator (IEnumVARIANT com_enum) { this.com_enum = com_enum; }