public static bool AllocateAndInitializeSid(byte nSubAuthorityCount, uint nSubAuthority0, uint nSubAuthority1, uint nSubAuthority2, uint nSubAuthority3, uint nSubAuthority4, uint nSubAuthority5, uint nSubAuthority6, uint nSubAuthority7, out SafeSidPtr pSid)
        {
            SafeLocalFree safeLocalFree = null;

            try
            {
                SID_IDENTIFIER_AUTHORITY sID_IDENTIFIER_AUTHORITY = default(SID_IDENTIFIER_AUTHORITY);
                sID_IDENTIFIER_AUTHORITY.m_Value0 = SafeSidPtr.SECURITY_NT_AUTHORITY[0];
                sID_IDENTIFIER_AUTHORITY.m_Value1 = SafeSidPtr.SECURITY_NT_AUTHORITY[1];
                sID_IDENTIFIER_AUTHORITY.m_Value2 = SafeSidPtr.SECURITY_NT_AUTHORITY[2];
                sID_IDENTIFIER_AUTHORITY.m_Value3 = SafeSidPtr.SECURITY_NT_AUTHORITY[3];
                sID_IDENTIFIER_AUTHORITY.m_Value4 = SafeSidPtr.SECURITY_NT_AUTHORITY[4];
                sID_IDENTIFIER_AUTHORITY.m_Value5 = SafeSidPtr.SECURITY_NT_AUTHORITY[5];
                int cb = Marshal.SizeOf(sID_IDENTIFIER_AUTHORITY);
                safeLocalFree = SafeLocalFree.LocalAlloc(cb);
                Marshal.StructureToPtr(sID_IDENTIFIER_AUTHORITY, safeLocalFree.DangerousGetHandle(), true);
                return(NativeMemoryMethods.AllocateAndInitializeSid(safeLocalFree, nSubAuthorityCount, nSubAuthority0, nSubAuthority1, nSubAuthority2, nSubAuthority3, nSubAuthority4, nSubAuthority5, nSubAuthority6, nSubAuthority7, out pSid));
            }
            finally
            {
                if (safeLocalFree != null)
                {
                    safeLocalFree.Close();
                }
            }
        }
Beispiel #2
0
 protected override bool ReleaseHandle()
 {
     if (this.m_pBlob != null)
     {
         NativeMemoryMethods.LocalFree(this.Blob.pbData);
         this.m_pBlob.Close();
     }
     return(true);
 }
Beispiel #3
0
        public SafeCoTaskMem Alloc(int cb)
        {
            SafeCoTaskMem safeCoTaskMem = NativeMemoryMethods.CoTaskMemAlloc(cb);

            if (safeCoTaskMem.IsInvalid)
            {
                safeCoTaskMem.SetHandleAsInvalid();
                throw new OutOfMemoryException();
            }
            return(safeCoTaskMem);
        }
        public static SafeLocalFree LocalAlloc(int flags, int cb)
        {
            SafeLocalFree safeLocalFree = NativeMemoryMethods.LocalAlloc(flags, (UIntPtr)(ulong)cb);

            if (safeLocalFree.IsInvalid)
            {
                safeLocalFree.SetHandleAsInvalid();
                int lastWin32Error = Marshal.GetLastWin32Error();
                throw new Win32Exception(lastWin32Error);
            }
            return(safeLocalFree);
        }
 protected override bool ReleaseHandle()
 {
     return(NativeMemoryMethods.LocalFree(base.handle) == IntPtr.Zero);
 }
Beispiel #6
0
 protected override bool ReleaseHandle()
 {
     NativeMemoryMethods.CoTaskMemFree(base.handle);
     return(true);
 }