Ejemplo n.º 1
0
        protected static int IPSecEnumPolicyData(IntPtr hstore, out IPSEC_POLICY_DATA[] ipsecPolicies)
        {
            ipsecPolicies = default;
            IntPtr pppIpsecPolicyData = Marshal.AllocHGlobal(IntPtr.Size);
            IntPtr pNumPolicyObjects  = Marshal.AllocHGlobal(IntPtr.Size);


            int hresult = IPSecEnumPolicyData(hstore, pppIpsecPolicyData, pNumPolicyObjects);

            IntPtr ppIpsecPolicyData = Marshal.ReadIntPtr(pppIpsecPolicyData);
            int    numPolicyObjects  = Marshal.ReadInt32(pNumPolicyObjects);


            for (int i = 0; i < numPolicyObjects; i++)
            {
                IntPtr            pIpsecPolicyData = Marshal.ReadIntPtr(ppIpsecPolicyData, IntPtr.Size * i);
                IPSEC_POLICY_DATA polData          = (IPSEC_POLICY_DATA)Marshal.PtrToStructure(pIpsecPolicyData, typeof(IPSEC_POLICY_DATA));

                //Believe I can just flush the reg if policy is not active,
                //Suspect easier to do this way but also more dangerous if it falls over.

                int testme = 5;
            }

            Marshal.FreeHGlobal(pppIpsecPolicyData);
            Marshal.FreeHGlobal(pNumPolicyObjects);
            return(hresult);
        }
Ejemplo n.º 2
0
        protected static int IPSecCreatePolicyData(IntPtr hStore, IPSEC_POLICY_DATA ipsecPolicyData)
        {
            IntPtr pIpsecPolicyData = Marshal.AllocHGlobal(Marshal.SizeOf(ipsecPolicyData));

            Marshal.StructureToPtr(ipsecPolicyData, pIpsecPolicyData, false);
            int hr = IPSecCreatePolicyData(hStore, pIpsecPolicyData);

            Marshal.FreeHGlobal(pIpsecPolicyData);
            return(hr);
        }
Ejemplo n.º 3
0
        protected static int IPSecGetAssignedPolicyData(IntPtr hStore, out IPSEC_POLICY_DATA ipsecPolicyData)
        {
            int hr = IPSecGetAssignedPolicyData(hStore, out IntPtr ipsecPolicyDataPtr);

            if (hr == 0 && ipsecPolicyDataPtr != IntPtr.Zero)
            {
                ipsecPolicyData = Marshal.PtrToStructure <IPSEC_POLICY_DATA>(ipsecPolicyDataPtr);
            }
            else
            {
                ipsecPolicyData = default;
            }

            return(hr);
        }
Ejemplo n.º 4
0
 /// <summary>
 ///
 /// </summary>
 /// <param name="assignedPolicyData"></param>
 /// <returns></returns>
 private int GetAssignedPolicyData(out IPSEC_POLICY_DATA assignedPolicyData) => IPSecGetAssignedPolicyData(hStore, out assignedPolicyData);
Ejemplo n.º 5
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="ipsecPolicyData"></param>
        /// <returns></returns>
        private int CreatePolicy(IPSEC_POLICY_DATA ipsecPolicyData)
        {
            int hr = IPSecCreatePolicyData(hStore, ipsecPolicyData);

            return(hr);
        }