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); }
internal unsafe TOut DeviceControlOutput <TOut>(DeviceIoControlCode controlCode) where TOut : unmanaged { TOut outBuff = new TOut(); DeviceControlOutput(controlCode, ref outBuff); return(outBuff); }
internal static extern bool DeviceIoControl(IntPtr hDevice, DeviceIoControlCode dwIoControlCode, IntPtr lpInBuffer, int nInBufferSize, IntPtr lpOutBuffer, int nOutBufferSize, out uint lpBytesReturned, IntPtr lpOverlapped);
internal unsafe void DeviceControl(DeviceIoControlCode controlCode) { bool success = DeviceIoControl(handle, controlCode, null, 0, null, 0, out _, null); if (!success) { throw new Win32Exception(); } }
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(); } } }
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(); } } }
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); }
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); }
private static extern bool DeviceIoControl(SafeFileHandle hVol, DeviceIoControlCode controlCode, IntPtr inBuffer, int nInBufferSize, ref DISK_GEOMETRY outBuffer, int outBufferSize, ref int bytesReturned, IntPtr overlapped);
internal static extern unsafe bool DeviceIoControl(SafeFileObjectHandle handle, DeviceIoControlCode controlCode, void *inBuffer, uint inBufferLength, void *outBuffer, uint outBufferLength, out uint returnSize, void *lpOverlapped);