Thierry Vermeylen : wnaspi32: Do not crash on SC_GETSET_TIMEOUTS.

Alexandre Julliard julliard at winehq.org
Tue Feb 14 16:24:50 CST 2017


Module: wine
Branch: master
Commit: 77af98e3dfdc1556d7c897451fd7973a8cb2e304
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=77af98e3dfdc1556d7c897451fd7973a8cb2e304

Author: Thierry Vermeylen <t_chan4958 at 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 at hotmail.com>
Signed-off-by: Alexandre Julliard <julliard at 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 */




More information about the wine-cvs mailing list