Module: wine Branch: stable Commit: f1739cc6a1dd327fe262b0dc43b28d9322d6aef7 URL: http://source.winehq.org/git/wine.git/?a=commit;h=f1739cc6a1dd327fe262b0dc43...
Author: Thierry Vermeylen t_chan4958@hotmail.com Date: Sat Feb 11 09:06:03 2017 +0000
wnaspi32: Do not crash on SC_GETSET_TIMEOUTS.
Signed-off-by: Thierry Vermeylen t_chan4958@hotmail.com Signed-off-by: Alexandre Julliard julliard@winehq.org (cherry picked from commit 77af98e3dfdc1556d7c897451fd7973a8cb2e304) Signed-off-by: Michael Stefaniuc mstefani@winehq.org
---
dlls/wnaspi32/winaspi32.c | 6 ++++++ include/wnaspi32.h | 11 +++++++++++ 2 files changed, 17 insertions(+)
diff --git a/dlls/wnaspi32/winaspi32.c b/dlls/wnaspi32/winaspi32.c index 0ce72aa..e915fbd 100644 --- a/dlls/wnaspi32/winaspi32.c +++ b/dlls/wnaspi32/winaspi32.c @@ -573,6 +573,12 @@ DWORD __cdecl SendASPI32Command(LPSRB lpSRB) FIXME("SC_GET_DISK_INFO always return 'int13 unassociated disk'.\n"); lpSRB->diskinfo.SRB_DriveFlags = 0; /* disk is not int13 served */ return SS_COMP; + case SC_GETSET_TIMEOUTS: { + PSRB_GetSetTimeouts psrb_gst = (PSRB_GetSetTimeouts)lpSRB; + FIXME("SC_GETSET_TIMEOUTS doesn't actually change the timeout value nor does it return the current value.\n"); + psrb_gst->SRB_Status = SS_COMP; /* synchronous call, should be the same as the return value of SendASPI32Command */ + return SS_COMP; + } default: FIXME("Unknown command %d\n", lpSRB->common.SRB_Cmd); } diff --git a/include/wnaspi32.h b/include/wnaspi32.h index 9051f00..5b0f808 100644 --- a/include/wnaspi32.h +++ b/include/wnaspi32.h @@ -200,6 +200,17 @@ typedef struct tagSRB32_GetDiskInfo { BYTE SRB_Rsvd1[10]; /* 0E Reserved */ } SRB_GetDiskInfo, *PSRB_GetDiskInfo;
+typedef struct tagSRB32_GetSetTimeouts { + BYTE SRB_Cmd; /* 00 ASPI cmd code = SC_GETSET_TIMEOUTS */ + BYTE SRB_Status; /* 01 ASPI command status byte */ + BYTE SRB_HaId; /* 02 ASPI host adapter number */ + BYTE SRB_Flags; /* 03 Reserved */ + DWORD SRB_Hdr_Rsvd; /* 04 Reserved */ + BYTE SRB_Target; /* 08 Target's SCSI ID */ + BYTE SRB_Lun; /* 09 Target's LUN number */ + DWORD SRB_Timeout; /* 10 Target's Timeout value */ +} SRB_GetSetTimeouts, *PSRB_GetSetTimeouts; + /* SRB header */ typedef struct tagSRB32_Header { BYTE SRB_Cmd; /* 00 ASPI cmd code = SC_RESET_DEV */