public static bool ScsiMiniportIdentify(this IoControl IoControl, out IdentifyDevice IdentifyDevice) => IoControl.ScsiMiniportIdentify(IoControl.ScsiGetAddress().TargetId, out IdentifyDevice);
public ScsiPassThroughIdentifyDevice(ScsiPassThrough Spt = default, uint Filter = default, byte[] SenseBuf = null, IdentifyDevice DataBuf = default) => (this.Spt, this.Filter, this.SenseBuf, this.DataBuf) = (Spt, Filter
public static bool ScsiMiniportIdentify(this IoControl IoControl, byte TargetId, out IdentifyDevice IdentifyDevice) { const byte ID_CMD = 0xEC; var SrbIoControl = new SrbIoControl( Signagure: "SCSIDISK", ControlCode: IOControlCode.ScsiMiniportIdentify, Timeout: 2 ); var inparams = new Disk.Sendcmdinparams( DriveRegs: new Disk.Ideregs( CommandReg: ID_CMD ), DriveNumber: TargetId ); bool Result = IoControl.ScsiMiniport <Disk.Sendcmdinparams, IdentifyDeviceOutData>(ref SrbIoControl, inparams, out var outparams, out var ReturnBytes); var buffer = new byte[IDENTIFY_BUFFER_SIZE]; using (PtrUtils.CreatePtr(outparams, out var IntPtr, out var Size)) { IdentifyDevice = (IdentifyDevice)Marshal.PtrToStructure(IntPtr.Add(IntPtr, (int)Marshal.OffsetOf <Disk.Sendcmdoutparams>(nameof(Disk.Sendcmdoutparams._Buffer))), typeof(IdentifyDevice)); return(Result); } }