Esempio n. 1
0
        internal unsafe TOut DeviceControlInputOutput <TIn, TOut>(DeviceIoControlCode controlCode, ref TIn inBuff) where TIn : unmanaged where TOut : unmanaged
        {
            TOut outBuff = new TOut();

            DeviceControlInputOutput(controlCode, ref inBuff, ref outBuff);
            return(outBuff);
        }
Esempio n. 2
0
        internal unsafe TOut DeviceControlOutput <TOut>(DeviceIoControlCode controlCode) where TOut : unmanaged
        {
            TOut outBuff = new TOut();

            DeviceControlOutput(controlCode, ref outBuff);
            return(outBuff);
        }
Esempio n. 3
0
 internal static extern bool DeviceIoControl(IntPtr hDevice,
                                             DeviceIoControlCode dwIoControlCode,
                                             IntPtr lpInBuffer,
                                             int nInBufferSize,
                                             IntPtr lpOutBuffer,
                                             int nOutBufferSize,
                                             out uint lpBytesReturned,
                                             IntPtr lpOverlapped);
Esempio n. 4
0
        internal unsafe void DeviceControl(DeviceIoControlCode controlCode)
        {
            bool success = DeviceIoControl(handle, controlCode, null, 0, null, 0, out _, null);

            if (!success)
            {
                throw new Win32Exception();
            }
        }
Esempio n. 5
0
        internal unsafe void DeviceControlInput <TIn>(DeviceIoControlCode controlCode, ref TIn inBuff) where TIn : unmanaged
        {
            fixed(void *inBuffP = &inBuff)
            {
                bool success = DeviceIoControl(handle, controlCode, inBuffP, (uint)Marshal.SizeOf <TIn>(), null, 0, out _, null);

                if (!success)
                {
                    throw new Win32Exception();
                }
            }
        }
Esempio n. 6
0
        internal unsafe void DeviceControlOutput <TOut>(DeviceIoControlCode controlCode, ref TOut outBuff) where TOut : unmanaged
        {
            fixed(void *outBuffP = &outBuff)
            {
                bool success = DeviceIoControl(handle, controlCode, null, 0, outBuffP, (uint)Marshal.SizeOf <TOut>(), out _, null);

                if (!success)
                {
                    throw new Win32Exception();
                }
            }
        }
Esempio n. 7
0
        internal unsafe uint DeviceControlOutput(DeviceIoControlCode controlCode, byte[] outBuff)
        {
            uint written = 0;

            fixed(void *outBuffP = outBuff)
            {
                bool success = DeviceIoControl(handle, controlCode, null, 0, outBuffP, (uint)outBuff.Length, out written, null);

                if (!success)
                {
                    throw new Win32Exception();
                }
            }

            return(written);
        }
Esempio n. 8
0
        internal unsafe uint DeviceControlInputOutput <TIn>(DeviceIoControlCode controlCode, ref TIn inBuff, byte[] outBuff) where TIn : unmanaged
        {
            uint written = 0;

            fixed(void *inBuffP = &inBuff)
            {
                fixed(byte *bufferP = outBuff)
                {
                    bool success = DeviceIoControl(handle, controlCode, inBuffP, (uint)Marshal.SizeOf <TIn>(), bufferP, (uint)outBuff.Length, out written, null);

                    if (!success)
                    {
                        throw new Win32Exception();
                    }
                }
            }

            return(written);
        }
Esempio n. 9
0
 private static extern bool DeviceIoControl(SafeFileHandle hVol, DeviceIoControlCode controlCode, IntPtr inBuffer, int nInBufferSize, ref DISK_GEOMETRY outBuffer, int outBufferSize, ref int bytesReturned, IntPtr overlapped);
Esempio n. 10
0
 internal static extern unsafe bool DeviceIoControl(SafeFileObjectHandle handle, DeviceIoControlCode controlCode, void *inBuffer, uint inBufferLength, void *outBuffer, uint outBufferLength, out uint returnSize, void *lpOverlapped);