Ejemplo n.º 1
0
        unsafe public IrpCompletedViewModel(int index, IrpCompletedInfo *info, IrpArrivedViewModel arrived) : base(index, arrived?.DriverName, &info->Header)
        {
            _arrived    = arrived;
            Status      = info->Status;
            Information = info->Information.ToInt64();
            Details     = $"Status: 0x{Status:X}; Information=0x{Information:X}";

            if (Status == StatusPending)
            {
                IrpType = IrpType.Pending;
                Icon    = "/icons/clock.ico";
                Details = "PENDING";
            }
            else if (Status >= 0)
            {
                IrpType = IrpType.CompleteSuccess;
                Icon    = "/icons/irp-success.ico";
            }
            else if ((uint)Status == StatusCancelled)
            {
                IrpType = IrpType.Cancelled;
                Icon    = "/icons/irp-cancel.ico";
            }
            else
            {
                IrpType = IrpType.CompleteError;
                Icon    = "/icons/irp-error.ico";
            }

            Irp       = _arrived != null ? _arrived.Irp : 0;
            MajorCode = _arrived != null ? _arrived.MajorCode : IrpMajorCode.UNKNOWN;
            DataSize  = info->DataSize;

            if (DataSize > 0)
            {
                Data = new byte[DataSize];
                fixed(byte *p = Data)
                {
                    Buffer.MemoryCopy((byte *)info + info->Header.Size - DataSize, p, DataSize, DataSize);
                }
            }
            Function = _arrived?.Function;
        }
Ejemplo n.º 2
0
        unsafe public IrpCompletedViewModel(int index, IrpCompletedInfo *info, IrpArrivedViewModel arrived) : base(index, arrived.DriverName, &info->Header)
        {
            _arrived    = arrived;
            Status      = info->Status;
            Information = info->Information.ToInt64();
            Details     = $"Status: 0x{Status:X}; Information=0x{Information:X}";

            if (Status >= 0)
            {
                IrpType = IrpType.CompleteSuccess;
                Icon    = "/icons/irp-success.ico";
            }
            else if ((uint)Status == StatusCancelled)
            {
                IrpType = IrpType.Cancelled;
                Icon    = "/icons/irp-cancel.ico";
            }
            else
            {
                IrpType = IrpType.CompleteError;
                Icon    = "/icons/irp-error.ico";
            }
        }
 public DataBufferViewModel(Window dialog, IrpArrivedViewModel vm) : base(dialog)
 {
     _vm = vm;
 }