>From [EMAIL PROTECTED]  Wed Jan  7 23:39:56 2004

>I'm using NT4preSP7. Adaptec Aspi 4.60 is running. Normally I use 
        ^^^^^^^^^^^^^
        Is this the string that is retuned in osver.szCSDVersion?

If yes, then there is a big chance that you either got
a wrong result from the new function w2kstyle_create() as a result
from an illegal memory access or the function w2kstyle_create()
just does not correctly know from which NT-4 version the additional
flags from NT-5.x need to be used.


Now, I need testers!

And for the NT4preSP7 case, I need a special test:

1) please insert a test printing line:

LOCAL BOOL 
w2kstyle_create(void) 
{ 
        OSVERSIONINFO osver; 
 
/*      return FALSE; */ 
        memset(&osver, 0, sizeof (osver)); 
        osver.dwOSVersionInfoSize = sizeof (osver); 
        GetVersionEx(&osver); 
        if (osver.dwPlatformId == VER_PLATFORM_WIN32_NT) { 
                /* 
                 * Win2000 is NT-5.0, Win-XP  is NT-5.1 
                 */      
                if (osver.dwMajorVersion > 4) 
                        return (TRUE); 
 
                if (osver.dwMajorVersion == 4) {                /* NT-4.x */ 
                        char    *vers = osver.szCSDVersion; 
 
error("osver.szCSDVersion: '%s'\n", vers); sleep(10);
                        if (strlen(vers) == 0) 
                                return (FALSE); 

Because of the sleep(10) you should be able to see the text even if there later
is a blue screen.

2) if you still get a blue screen, add a  return (FALSE); after the 'error(...'
line.

3) If this does not help, try a  return (TRUE);



Other changes: cdrecord dev=ASPI -scanbus will work.


save the mail and run patch < saved-mail

/*--------------------------------------------------------------------------*/
Here is a patch that needs to be applied to cdrtools-2.01a24:

*** ../cdrecord/cdrtools-2.01/libscg/scsi-wnt.c Mi Jan  7 00:20:32 2004
--- /tmp/scsi-wnt.c     So Jan 11 14:39:46 2004
***************
*** 65,72 ****
   *    Choose your name instead of "schily" and make clear that the version
   *    string is related to a modified source.
   */
! LOCAL char    _scg_trans_version[] = "scsi-wnt.c-1.35";       /* The version for 
this transport*/
! LOCAL char    _scg_itrans_version[] = "SPTI-scsi-wnt.c-1.35"; /* The version for 
SPTI */
  
  /*
   * Local defines and constants
--- 65,72 ----
   *    Choose your name instead of "schily" and make clear that the version
   *    string is related to a modified source.
   */
! LOCAL char    _scg_trans_version[] = "scsi-wnt.c-1.38";       /* The version for 
this transport*/
! LOCAL char    _scg_itrans_version[] = "SPTI-scsi-wnt.c-1.38"; /* The version for 
SPTI */
  
  /*
   * Local defines and constants
***************
*** 110,115 ****
--- 110,116 ----
  LOCAL void    copy_sensedata  __PR((SRB_ExecSCSICmd *cp, struct scg_cmd *sp));
  LOCAL void    set_error       __PR((SRB_ExecSCSICmd *cp, struct scg_cmd *sp));
  LOCAL BOOL    open_driver     __PR((SCSI *scgp));
+ LOCAL BOOL    load_aspi       __PR((SCSI *scgp));
  LOCAL BOOL    close_driver    __PR((void));
  LOCAL int     ha_inquiry      __PR((SCSI *scgp, int id, SRB_HAInquiry *ip));
  #ifdef        __USED__
***************
*** 286,305 ****
        osver.dwOSVersionInfoSize = sizeof (osver);
        GetVersionEx(&osver);
        if (osver.dwPlatformId == VER_PLATFORM_WIN32_NT) {
!               if (osver.dwMajorVersion > 4)   /* W2k, XP + */
                        return (TRUE);
  
!               if (osver.dwMajorVersion == 4) {
!                       if (strlen(osver.szCSDVersion)) {       /*if Servicepack 
installed */
!                               int i = 0;
  
!                               while (osver.szCSDVersion[i] != '\0' &&
!                                       !isdigit(osver.szCSDVersion[i]))
!                                       i++;
!                               if (isdigit(osver.szCSDVersion[i]) &&
!                                   (atoi(&osver.szCSDVersion[i]) >= 4 || 
isdigit(osver.szCSDVersion[i+1]))) /* Fom Service Pack 4 */
!                                       return (TRUE);                                 
                 /* same as for W2K */
!                       }
                }
        }
        return (FALSE);
--- 287,315 ----
        osver.dwOSVersionInfoSize = sizeof (osver);
        GetVersionEx(&osver);
        if (osver.dwPlatformId == VER_PLATFORM_WIN32_NT) {
!               /*
!                * Win2000 is NT-5.0, Win-XP  is NT-5.1
!                */     
!               if (osver.dwMajorVersion > 4)
                        return (TRUE);
  
!               if (osver.dwMajorVersion == 4) {                /* NT-4.x */
!                       char    *vers = osver.szCSDVersion;
  
!                       if (strlen(vers) == 0)
!                               return (FALSE);
! 
!                       /*
!                        * Servicepack is installed, skip over non-digit part
!                        */
!                       while (*vers != '\0' && !isdigit(*vers))
!                               vers++;
!                       if (*vers == '\0')
!                               return (FALSE);
! 
!                       if (isdigit(vers) &&
!                           (atoi(vers) >= 4 || isdigit(vers[1])))      /* Fom Service 
Pack 4 */
!                               return (TRUE);                          /* same as for 
W2K */
                }
        }
        return (FALSE);
***************
*** 702,714 ****
                return (-1);
        }
  
!       if ((device != NULL && *device != '\0' && strcmp(device, "SPTI") != 0 && 
strcmp(device, "ASPI") != 0) || (busno == -2 && tgt == -2)) {
                errno = EINVAL;
                if (scgp->errstr)
                        js_snprintf(scgp->errstr, SCSI_ERRSTR_SIZE,
!                               "Devname '%s' unknown.", device);
                return (-1);
        }
        if (AspiLoaded <= 0) {  /* do not change access method on open driver */
                bForceAccess = FALSE;
  #ifdef PREFER_SPTI
--- 712,730 ----
                return (-1);
        }
  
!       if (device != NULL &&
!           (strcmp(device, "SPTI") == 0 || strcmp(device, "ASPI") == 0) &&
!           (busno < 0 && tgt < 0 && tlun < 0))
!               goto devok;
! 
!       if ((device != NULL && *device != '\0') || (busno == -2 && tgt == -2)) {
                errno = EINVAL;
                if (scgp->errstr)
                        js_snprintf(scgp->errstr, SCSI_ERRSTR_SIZE,
!                               "Open by 'devname' not supported on this OS");
                return (-1);
        }
+ devok:
        if (AspiLoaded <= 0) {  /* do not change access method on open driver */
                bForceAccess = FALSE;
  #ifdef PREFER_SPTI
***************
*** 734,739 ****
--- 750,761 ----
                 * This is the non -scanbus case.
                 */
                ;
+       } else if (tgt == -2 && tgt == -2 &&
+                  (tgt == -2 || tlun >= 0)) {
+               /*
+                * This is the dev=ASPI case.
+                */
+               ;
        } else if (tgt != -1 || tgt != -1 || tlun != -1) {
                errno = EINVAL;
                return (-1);
***************
*** 1309,1359 ****
                if (InitSCSIPT() > 0) AspiLoaded++;
  #endif
  #ifdef        PREFER_SPTI
!       if ((!bUsingSCSIPT || !bForceAccess) && AspiLoaded <= 0)
  #else
!       if (!bUsingSCSIPT || !bForceAccess)
  #endif
! #ifdef        __CYGWIN32__
!               hAspiLib = dlopen("WNASPI32", RTLD_NOW);
! #else
!               hAspiLib = LoadLibrary("WNASPI32");
! #endif
! 
!       /*
!        * Check if ASPI library is loaded correctly
!        */
!       if (hAspiLib != NULL) {
!       /*
!        * Get a pointer to GetASPI32SupportInfo function
!        * and a pointer to SendASPI32Command function
!        */
! #ifdef        __CYGWIN32__
!       pfnGetASPI32SupportInfo = (DWORD(*)(void))dlsym(hAspiLib, 
"GetASPI32SupportInfo");
!       pfnSendASPI32Command = (DWORD(*)(LPSRB))dlsym(hAspiLib, "SendASPI32Command");
! #else
!       pfnGetASPI32SupportInfo = (DWORD(*)(void))GetProcAddress(hAspiLib, 
"GetASPI32SupportInfo");
!       pfnSendASPI32Command = (DWORD(*)(LPSRB))GetProcAddress(hAspiLib, 
"SendASPI32Command");
! #endif
! 
!       if ((pfnGetASPI32SupportInfo == NULL) || (pfnSendASPI32Command == NULL)) {
!               js_fprintf((FILE *)scgp->errfile,
!                               "ASPI function not found in library!");
!               return (FALSE);
        }
  
- #ifdef        __CYGWIN32__
-       pfnGetASPI32Buffer = (BOOL(*)(PASPI32BUFF))dlsym(hAspiLib, "GetASPI32Buffer");
-       pfnFreeASPI32Buffer = (BOOL(*)(PASPI32BUFF))dlsym(hAspiLib, 
"FreeASPI32Buffer");
-       pfnTranslateASPI32Address = (BOOL(*)(PDWORD, PDWORD))dlsym(hAspiLib, 
"TranslateASPI32Address");
- #else
-       pfnGetASPI32Buffer = (BOOL(*)(PASPI32BUFF))GetProcAddress(hAspiLib, 
"GetASPI32Buffer");
-       pfnFreeASPI32Buffer = (BOOL(*)(PASPI32BUFF))GetProcAddress(hAspiLib, 
"FreeASPI32Buffer");
-       pfnTranslateASPI32Address = (BOOL(*)(PDWORD, PDWORD))GetProcAddress(hAspiLib, 
"TranslateASPI32Address");
- #endif
-       AspiLoaded++;
-       bUsingSCSIPT = FALSE;
-       }
- 
  #ifndef       PREFER_SPTI
        if ((bUsingSCSIPT || !bForceAccess) && AspiLoaded <= 0)
                if (InitSCSIPT() > 0)
--- 1331,1346 ----
                if (InitSCSIPT() > 0) AspiLoaded++;
  #endif
  #ifdef        PREFER_SPTI
!       if ((!bUsingSCSIPT || !bForceAccess) && AspiLoaded <= 0) {
  #else
!       if (!bUsingSCSIPT || !bForceAccess) {
  #endif
!               if (load_aspi(scgp)) {
!                       AspiLoaded++;
!                       bUsingSCSIPT = FALSE;
!               }
        }
  
  #ifndef       PREFER_SPTI
        if ((bUsingSCSIPT || !bForceAccess) && AspiLoaded <= 0)
                if (InitSCSIPT() > 0)
***************
*** 1414,1420 ****
--- 1401,1460 ----
        return (TRUE);
  }
  
+ LOCAL BOOL
+ load_aspi(scgp)
+       SCSI    *scgp;
+ {
+ #ifdef        __CYGWIN32__
+       hAspiLib = dlopen("WNASPI32", RTLD_NOW);
+ #else
+       hAspiLib = LoadLibrary("WNASPI32");
+ #endif
+       /*
+        * Check if ASPI library is loaded correctly
+        */
+       if (hAspiLib == NULL) {
+ #ifdef        not_done_later
+               js_fprintf((FILE *)scgp->errfile, "Can not load ASPI driver! ");
+ #endif
+               return (FALSE);
+       }
  
+       /*
+        * Get a pointer to GetASPI32SupportInfo function
+        * and a pointer to SendASPI32Command function
+        */
+ #ifdef        __CYGWIN32__
+       pfnGetASPI32SupportInfo = (DWORD(*)(void))dlsym(hAspiLib, 
"GetASPI32SupportInfo");
+       pfnSendASPI32Command = (DWORD(*)(LPSRB))dlsym(hAspiLib, "SendASPI32Command");
+ #else
+       pfnGetASPI32SupportInfo = (DWORD(*)(void))GetProcAddress(hAspiLib, 
"GetASPI32SupportInfo");
+       pfnSendASPI32Command = (DWORD(*)(LPSRB))GetProcAddress(hAspiLib, 
"SendASPI32Command");
+ #endif
+ 
+       if ((pfnGetASPI32SupportInfo == NULL) || (pfnSendASPI32Command == NULL)) {
+               js_fprintf((FILE *)scgp->errfile,
+                               "ASPI function not found in library! ");
+               return (FALSE);
+       }
+ 
+       /*
+        * The following functions are currently not used by libscg.
+        * If we start to use them, we need to check whether the founctions
+        * could be found in the ASPI library that just has been loaded.
+        */
+ #ifdef        __CYGWIN32__
+       pfnGetASPI32Buffer = (BOOL(*)(PASPI32BUFF))dlsym(hAspiLib, "GetASPI32Buffer");
+       pfnFreeASPI32Buffer = (BOOL(*)(PASPI32BUFF))dlsym(hAspiLib, 
"FreeASPI32Buffer");
+       pfnTranslateASPI32Address = (BOOL(*)(PDWORD, PDWORD))dlsym(hAspiLib, 
"TranslateASPI32Address");
+ #else
+       pfnGetASPI32Buffer = (BOOL(*)(PASPI32BUFF))GetProcAddress(hAspiLib, 
"GetASPI32Buffer");
+       pfnFreeASPI32Buffer = (BOOL(*)(PASPI32BUFF))GetProcAddress(hAspiLib, 
"FreeASPI32Buffer");
+       pfnTranslateASPI32Address = (BOOL(*)(PDWORD, PDWORD))GetProcAddress(hAspiLib, 
"TranslateASPI32Address");
+ #endif
+       return (TRUE);
+ }
+ 
  /***************************************************************************
   *                                                                       *
   *  BOOL close_driver()                                                          *


Jörg

-- 
 EMail:[EMAIL PROTECTED] (home) Jörg Schilling D-13353 Berlin
       [EMAIL PROTECTED]                (uni)  If you don't have iso-8859-1
       [EMAIL PROTECTED]        (work) chars I am J"org Schilling
 URL:  http://www.fokus.fraunhofer.de/usr/schilling ftp://ftp.berlios.de/pub/schily


-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]

Reply via email to