deviceiocontrol (coredll)
Last changed: -125.178.110.10

.
Summary
This function allows you to send and receive data to control certain devices of your CE device.

C# Signature:

[DllImport("coredll.dll", EntryPoint="DeviceIoControl", SetLastError=true)]
        internal static extern int DeviceIoControlCE(
            int hDevice,
            int dwIoControlCode,
            byte[] lpInBuffer,
            int nInBufferSize,
            byte[] lpOutBuffer,
            int nOutBufferSize,
            ref int lpBytesReturned,
            IntPtr lpOverlapped);

VB Signature:

<DllImport("CoreDll.dll")> Function DeviceIoControl(ByVal hDevice As Integer, ByVal dwIoControlCode As Integer, _
                         ByVal lpInBuffer As String, ByVal nInBufferSize As Integer, _
                         ByVal lpOutBuffer() As Byte, ByVal nOutBufferSize As Integer, _
                         ByRef lpBytesReturned As Integer, ByVal lpOverlapped As Integer) As Integer
    End Function

User-Defined Types:

None.

Alternative Managed API:

Do you know one? Please contribute it!

Notes:

None.

Tips & Tricks:

Please add some!!!

Sample Code:

DeviceIoControlCE(m_hPort, 0x1003, PosX, PosX.Length, outDataX, outDataX.Length, ref xfer, IntPtr.Zero)

/* From Windows Mobile Unified Sensor API (http://www.codeplex.com/sensorapi) */

static void DeviceIoControl(int controlCode, int[] inBuffer, int[] outBuffer)
    {
        IntPtr file = NativeMethods.CreateFile("ACS1:", 0, 0, IntPtr.Zero, ECreationDisposition.OpenExisting, 0, IntPtr.Zero);
        if (file == (IntPtr)(-1))
        throw new InvalidOperationException("Unable to Create File");

        try
        {
        int bytesReturned = 0;
        int inSize = sizeof(int) * inBuffer.Length;
        int outSize = sizeof(int) * outBuffer.Length;
        if (!NativeMethods.DeviceIoControl(file, controlCode, inBuffer, inSize, outBuffer, outSize, ref bytesReturned, IntPtr.Zero))
            throw new InvalidOperationException("Unable to perform operation.");
        }
        finally
        {
        NativeMethods.CloseHandle(file);
        }
    }

/* From Windows Mobile Unified Sensor API (http://www.codeplex.com/sensorapi) */

Documentation