Exemplo n.º 1
0
        /// <summary>Get system device info structure</summary>
        /// <param name="bytesReturned">Length of system device info</param>
        /// <returns>System device info structure</returns>
        private DiscAPI.SENDCMDOUTPARAMS GetDeviceInfo(out UInt32 bytesReturned)
        {
            DiscAPI.SENDCMDINPARAMS inParams = DiscAPI.SENDCMDINPARAMS.Create(false);
            inParams.cBufferSize             = Constant.BUFFER_SIZE;
            inParams.irDriveRegs.bCommandReg = DiscAPI.IDEREGS.IDE.ID_CMD;

            DiscAPI.SENDCMDOUTPARAMS outParams = this.DeviceIoControl(Constant.IOCTL_DISC.SMART_RCV_DRIVE_DATA,
                                                                      inParams,
                                                                      out bytesReturned);
            return(outParams);
        }
Exemplo n.º 2
0
        private DiscAPI.SENDCMDOUTPARAMS ReadAttributes(DiscAPI.IDEREGS.SMART featureReg)
        {
            DiscAPI.SENDCMDINPARAMS inParams = DiscAPI.SENDCMDINPARAMS.Create(true);
            inParams.cBufferSize = Constant.BUFFER_SIZE;
            inParams.irDriveRegs.bFeaturesReg = featureReg;

            UInt32 bytesReturned;

            return(this.DeviceIoControl(Constant.IOCTL_DISC.SMART_RCV_DRIVE_DATA,
                                        inParams,
                                        out bytesReturned));
        }
Exemplo n.º 3
0
        /// <summary>Send device IO control command</summary>
        /// <param name="inParams">In command params</param>
        /// <param name="dwIoControlCode">Control code</param>
        /// <param name="bytesReturned">Bytes returned from command operation</param>
        /// <returns>Out device params</returns>
        private DiscAPI.SENDCMDOUTPARAMS DeviceIoControl(UInt32 dwIoControlCode, DiscAPI.SENDCMDINPARAMS inParams, out UInt32 bytesReturned)
        {
            DiscAPI.SENDCMDOUTPARAMS result = this.Device.IoControl <DiscAPI.SENDCMDOUTPARAMS>(
                (UInt32)dwIoControlCode,
                inParams,
                out bytesReturned);

            if (result.DriverStatus.bDriverError != DiscAPI.DRIVERSTATUS.SMART_ERROR.NO_ERROR)
            {
                throw new InvalidOperationException(result.DriverStatus.bDriverError.ToString());
            }
            else
            {
                return(result);
            }
        }