CreateThread (kernel32)
Last changed: -197.211.63.30

.
Summary

C# Signature:

[DllImport("Kernel32.dll", CharSet = CharSet.Auto, SetLastError = true)]

    private unsafe static extern uint CreateThread(
        uint* lpThreadAttributes,
        uint dwStackSize,
        StartThread lpStartAddress,
        uint* lpParameter,
        uint dwCreationFlags,
        out uint lpThreadId);

Notes:

None.

Sample Code:

public delegate void StartThread();

unsafe uint StartThread(StartThread ThreadFunc, int StackSize)

    {
        //StartThread threadFunc = new StartThread(ThreadFunc);
        uint a = 0;
        uint* lpThrAtt = &a;
        uint i = 0;
        uint* lpParam = &i;
        uint lpThreadID = 0;

        uint dwHandle = CreateThread(null, (uint)StackSize, ThreadFunc, lpParam, 0, out lpThreadID);
        if (dwHandle == 0) throw new Exception("Unable to create thread!");
        return dwHandle;
    }

Tips & Tricks:

Please add some!

C# Signature:

[DllImport("kernel32.dll")]
static extern IntPtr CreateThread([In] ref SECURITY_ATTRIBUTES
   SecurityAttributes, uint StackSize, System.Threading.ThreadStart StartFunction,
   IntPtr ThreadParameter, uint CreationFlags, out uint ThreadId);

User-Defined Types:

SECURITY_ATTRIBUTES

Notes:

None.

Tips & Tricks:

Please add some!

Sample Code:

Please add some!

Alternative Managed API:

Try System.Threading.Thread.Start. It doesn't give you all the control of directly calling CreateThread, (such as specifing the flags), but it will get you a vanilla thread to spin up.

Documentation