Fixed bug in `SafeProcThreadAttributeList.Create` (#249)

pull/250/head
dahall 2021-09-20 09:32:34 -06:00
parent 1307ad6eac
commit f28c7c3d8b
2 changed files with 4 additions and 1 deletions

View File

@ -7568,7 +7568,7 @@ namespace Vanara.PInvoke
{
var pVal = new PinnedObject(value);
values.Add((attr, value, pVal));
if (!UpdateProcThreadAttribute(handle, 0, attr, pVal, Marshal.SizeOf(value)))
if (!UpdateProcThreadAttribute(handle, 0, attr, pVal, InteropExtensions.SizeOf(value)))
Win32Error.ThrowLastError();
}
}

View File

@ -452,12 +452,15 @@ namespace Vanara.PInvoke.Tests
Assert.That(PROC_THREAD_ATTRIBUTE.PROC_THREAD_ATTRIBUTE_HANDLE_LIST, Is.EqualTo(new UIntPtr(0x20002)));
Assert.That(() =>
{
using var p2 = CreateProcess("cmd.exe");
var l = SafeProcThreadAttributeList.Create(new Dictionary<PROC_THREAD_ATTRIBUTE, object>
{
{PROC_THREAD_ATTRIBUTE.PROC_THREAD_ATTRIBUTE_IDEAL_PROCESSOR, new PROCESSOR_NUMBER(0, 2) },
{PROC_THREAD_ATTRIBUTE.PROC_THREAD_ATTRIBUTE_MITIGATION_POLICY, 0x00000001UL },
{PROC_THREAD_ATTRIBUTE.PROC_THREAD_ATTRIBUTE_HANDLE_LIST, new HANDLE[] { p2 } },
});
l.Dispose();
p2.Close();
}, Throws.Nothing);
}