I have a stub driver that received IOCTLS from a C app. I am trying to port this to C#.Net 2008.
The problem is my IOCTLs are getting mangled so the driver doesn't recognise them.
I am using the api declaration from pinvoke.net
and my IOCTL is defined as
I know from debugview that the driver receives :
IOCTL code received 262153216
Somehow I think something is wrong with the marshalling, and possible the API call from PInvoke is wrong. On the off chance any of you guys have tried sending IOCTL from .Net can you suggest what is wrong here?
(posted on osronline as well)
The problem is my IOCTLs are getting mangled so the driver doesn't recognise them.
I am using the api declaration from pinvoke.net
Code:
[DllImport("Kernel32.dll", SetLastError = false, CharSet = CharSet.Auto)] public static extern bool DeviceIoControl( Microsoft.Win32.SafeHandles.SafeFileHandle hDevice, Int32 ioctl, [MarshalAs(UnmanagedType.AsAny)] [In] object InBuffer, int nInBufferSize, [MarshalAs(UnmanagedType.AsAny)] [Out] object OutBuffer, int nOutBufferSize, ref uint pBytesReturned, [In] IntPtr lpOverlapped);
Code:
internal static Int32 SIOCTL_TYPE = 4000; internal static Int32 METHOD_BUFFERED = 0; internal static Int32 FILE_ANY_ACCESS = 0; internal static Int32 IOCTL_START_INBOUND_TRAFFIC =((SIOCTL_TYPE) << 16) |((FILE_ANY_ACCESS) << 14) |((0x900) << 2) | (METHOD_BUFFERED);
IOCTL code received 262153216
Somehow I think something is wrong with the marshalling, and possible the API call from PInvoke is wrong. On the off chance any of you guys have tried sending IOCTL from .Net can you suggest what is wrong here?
(posted on osronline as well)

Comment