Ejemplo n.º 1
0
 public static bool ScsiMiniportIdentify(this IoControl IoControl, out IdentifyDevice IdentifyDevice)
 => IoControl.ScsiMiniportIdentify(IoControl.ScsiGetAddress().TargetId, out IdentifyDevice);
Ejemplo n.º 2
0
 public ScsiPassThroughIdentifyDevice(ScsiPassThrough Spt = default, uint Filter = default, byte[] SenseBuf = null, IdentifyDevice DataBuf = default)
 => (this.Spt, this.Filter, this.SenseBuf, this.DataBuf) = (Spt, Filter
Ejemplo n.º 3
0
        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);
            }
        }