Foire aux questions ASPI

Résumé : Foire aux questions (FAQ) sur les différents problèmes rencontrés avec la couche logicielle ASPI (Advanced SCSI Programming Interface).
 

Fonctionnement de la FAQ

Les rubriques composant la table des matières ci-dessous renvoient aux développements qui sont consacrés plus loin à chacune des questions. Il suffit donc de cliquer sur l'intitulé pour afficher la réponse. A l'inverse, il existe sous chaque question un lien renvoyant à la table des matières.
Par ailleurs, la Page des FAQ regroupe les points d'accès à toutes les FAQ du site.

Table des matières
1. Qu'est-ce que la couche ASPI ?
2. Quelques perspectives
3. Les fichiers qui composent la couche ASPI
4. Les versions de la couche Aspi
5. Erreur à l'ouverture du pilote ASPI
6. Le programme Aspi_me refuse de tourner après le 1er janvier 1999
7. Le lecteur de CD-ROM/de Zip n'est pas visible
8. Chargement du pilote ASPI sous DOS/Windows 3
9. Exemple de fichier config.sys pour une carte AHA-154x
10. Installation des pilotes ASPI sous Windows 95/98/ME et Windows NT/2000
11. Codes d'erreur ASPI
12. Comment programmer la couche ASPI ?
13. La couche ASPI est-elle utilisée par l'OS ?
14. Un nouveau pilote ASPI


Qu'est-ce que la couche ASPI ? Retour à la TdM

Le sigle ASPI signifie Advanced SCSI Programming Interface (Interface de programmation SCSI). Initialement, le 'A' signifiait Adaptec (société à l'origine de la couche Aspi). Cette "couche ASPI" (que l'on appelle également "gestionnaire ASPI") est une couche logicielle qui gère les échanges entre les applications (programmes) et les matériels SCSI ou assimilés (carte SCSI, lecteur de disque, scanner, graveur de CD-ROM, etc.) qui équipent le PC. De cette manière, une application dispose d'une interface relativement normalisée pour accéder aux différents services fournis par les lecteurs ou autres périphériques.
Avec la normalisation des méthodes d'accès aux périphériques, on observe un processus de convergence entre tous les types de lecteurs (IDE, ATAPI, SCSI et autres, comme la connexion sur le port parallèle). De ce fait, quand on balaie les bus SCSI, il devient possible (en fonction de la version du gestionnaire ASPI) de voir différents types de lecteurs, comme des Zip ATAPI et même les disques durs IDE sous Windows NT.
Cela explique que nos programmes puissent ne pas voir certains lecteurs de CD-ROM ou de cartouches Zip tant que vous n'avez pas installé ou mis à jour la couche ASPI.
Lorsque l'installation de la couche ASPI est terminée, vous devez redémarrer l'ordinateur pour que les changements entrent en jeu. Il arrive qu'il soit nécessaire d'éteindre la machine et de redémarrer à froid pour que les changements soient enregistrés correctement.


Quelques perspectives Retour à la TdM

Existe-t-il d'autres méthodes pour accéder au matériel ? Très curieusement, il faut observer que si la couche ASPI est aujourd'hui devenue la norme, elle s'est longtemps opposée à une autre solution, appelée CAM (Common Access Method) qui, elle, a été normalisée par l'ISO mais n'est pas parvenue à s'imposer face à la montée du quasi-monopole d'Adaptec sur les cartes d'interfaçage de disques.
Au cours de cette phase de montée, la politique de concession de licences de la couche ASPI adoptée par Adaptec a été extrêmement libérale (licence gratuite, SDK détaillé librement disponible, etc.).
Cette période culmine avec la sortie de Windows 95 qui, consécration ultime, est livré avec une couche ASPI. Sous Windows 95, les méthodes classiques d'accès aux disques (interruptions) n'étaient plus ouvertes aux applications normales, et Microsoft a trouvé commode d'offrir aux programmeurs cette solution de repli, plus facilement accessible que la création d'une nouvelle interface de programmation (il était difficile de porter les solutions de NT sous 95).
Parallèlement s'est développé le marché des graveurs de CD-ROM, où Adaptec ne joue pas seulement le rôle de fournisseur de matériel, mais aussi d'éditeur de logiciel. Une contradiction est ainsi apparue entre la volonté de diffuser le matériel (et la couche Aspi) et celle de se préserver de la concurrence (les conditions de licence sont devenues plus restrictives à cette époque, Adaptec demandant de préciser la nature et même le nom des programmes avec lesquels serait distribuée la couche Aspi).
D'un autre côté, Microsoft a toujours vu d'un mauvais oeil l'utilisation de la couche Aspi sous Windows NT, car cette solution d'accès au matériel court-circuite les mesures de sécurité (un utilisateur normal peut accéder au matériel sans que les droits lui aient été attribués par un administrateur).
Nous sommes aujourd'hui arrivé au terme de cette évolution. Je doute qu'Adaptec continue de développer la couche Aspi, surtout si l'on considère la situation de concurrence sur le marché de la gravure et l'évolution des systèmes d'exploitation (convergence de NT et de 95/98). Les applications vont donc être obligées d'utiliser d'autres méthodes d'accès aux disques (c'est déjà le cas pour les disques USB et FireWire). Windows NT et ses successeurs offrent des voies qui sont longtemps restées peu explorées (compte tenu de l'excellente qualité du travail de développement de Dan Polfer, principal architecte de la couche Aspi), qui ont nom IOCTL (Input/Output Control) et SPTI (SCSI Pass Through Interface).


Les fichiers qui composent la couche ASPI Retour à la TdM

Sous Windows 95/98/ME :

Sous Windows NT/2000 : Vous pouvez vérifier la version installée sur votre ordinateur en faisant un clic droit sur l'un de ces fichiers et en sélectionnant l'onglet Version. Vous pouvez également pour ce faire télécharger notre utilitaire AspiTest.


Erreur à l'ouverture du pilote ASPI Retour à la TdM

Tous les fichiers qui composent la couche Aspi devraient être de la version 4.57 (1008) ou supérieure (actuellement, 4.60 [1021]). Pour tester la version des fichiers composant la couche Aspi, téléchargez notre Aspitest (équivalent fonctionnel de l'Aspichk d'Adaptec).
Incohérence des versions. Il peut arriver que plusieurs versions cohabitent sur l'ordinateur. Recherchez sur votre ou vos disques durs les fichiers dont se compose la couche ASPI. Ce sont les seuls qui doivent être présents, et ils ne doivent pas se trouver ailleurs que dans les répertoires indiqués.
Sous Windows 95/98, le système d'exploitation est livré avec une version de la couche Aspi. Cette couche n'est pas nécessairement la plus récente, si bien qu'il reste souvent nécessaire de faire la mise à jour.
Sous Windows NT et Windows 2000, les pilotes ASPI ne font pas partie du système d'exploitation de base. Il faut donc que vous les installiez (programme aspiinst.exe dans le sous-répertoire aspi créé dans le répertoire où vous avez installé nos programmes). Notez bien que l'installation doit se faire depuis un compte d'administrateur (compte ayant les droits nécessaires pour installer un service) et qu'il est ensuite nécessaire de relancer l'ordinateur.
Sous Windows 3.1x, cette erreur provient du fait que votre ordinateur ne charge pas les pilotes correctement. Les pilotes sont chargés par des instructions placées dans le fichier config.sys. Voir un exemple de lignes d'instruction chargeant les pilotes.


Le programme Aspi_me refuse de tourner après le 1er janvier 1999 Retour à la TdM

Le programme Aspi_me.exe, qui a été distribué avec certaines versions de nos programmes de transfert, comporte une fonction de contrôle de la date. Si cette dernière est postérieure au 1er janvier 1999, le programme vous demande de télécharger la toute dernière version depuis le site de grc.com, mais ce fichier n'est plus disponible sur ce site.
Il est en fait possible de tout simplement de reculer la date de l'ordinateur pour que l'installation se fasse normalement.
Les versions récentes de nos programmes sont distribuée avec l'installateur Adaptec aspiinst.exe. Ce programme d'installation est placé dans un sous-répertoire appelé ASPI, situé dans le répertoire où vous avez installé nos programmes (c:\mac\aspi ou encore c:\program files\ls_duhem\aspi).


Les versions de la couche Aspi Retour à la TdM

Pour tester la version des fichiers composant la couche Aspi, téléchargez notre Aspitest.exe (équivalent fonctionnel de l'Aspichck d'Adaptec). La couche doit être à la version 4.57 [1008] minimum, mais de préférence 4.60 [1021].


Le lecteur de CD-ROM/de Zip n'est pas visible Retour à la TdM

Tous les lecteurs équipant votre ordinateur sont bien affichés par le programme dans la boîte de sélection affichée, sauf le lecteur de CD-ROM, et parfois aussi sauf le lecteur Zip IDE. Il est possible que ce comportement survienne soudainement, après l'installation d'une application effectuant une mise à jour de la couche ASPI, comme un logiciel de gravure de CD-ROM.
Pour y remédier, il est nécessaire d'intervenir dans le registre. Lancez RegEdit pour visualiser le registre et recherchez la chaîne "ExcludeMiniports".
Sous Windows NT/2000, cette chaîne se trouve dans la clef :

HKEY_LOCAL_MACHINE
   SYSTEM
      CurrentControlSet
          Services
              Aspi32
                 Parameters
                    ExcludeMiniports
Sous Windows 95/98, elle se trouve dans la clef :
HKEY_LOCAL_MACHINE
  System
    CurrentControlSet
       Services
          VxD
            APIX
              ExcludeMiniports
Elle a probablement pour contenu "ATAPI". Faites un clic droit sur la clef et choisissez 'Modifier', puis supprimez le contenu de la chaîne. Redémarrez l'ordinateur. Vous devriez désormais accéder aux lecteurs IDE/ATAPI normalement.
Attention, nous avons rencontré au moins un cas où cette exclusion se justifiait, et où l'ordinateur se plantait si l'on n'excluait pas le lecteur de CD-ROM des lecteurs accessibles par la couche ASPI. Dans ce cas, il n'y a pas d'autre solution que de changer de lecteur.
Il arrive aussi que l'installateur de la couche ASPI ne crée pas cette clef ExcludeMiniports et ne fasse rien. L'absence de cette clef a aussi pour conséquence que les lecteurs ATAPI sont verrouillés (en d'autres termes, le verrouillage s'opère (1) si la clef n'existe pas et (2) si la clef existe et contient "ATAPI").
Sous Windows NT, il faut donc lancer RegEdit et créer une clef Parameters sous Aspi32, puis laisser la clef Default non définie, créer une clef "ExcludeMiniports", sans contenu (voir ci-dessus).
Sous Windows 95/98, de la même manière, nous avons observé une configuration où il n'existait pas de clef APIX. Dans ce cas, il a été nécessaire de créer cette clef, et d'y placer une clef "ExcludeMiniports" vide (cf.ci-dessus).
Vous pouvez également pour ce faire télécharger notre utilitaire AspiTest (cliquer sur le bouton "Registre" lorsque le programme affiche les numéros de version des fichiers composant la couche Aspi.
Attention, il peut exister d'autres causes à l'absence de certains lecteurs dans le cas de Windows 2000.


Chargement du pilote ASPI sous DOS/Windows 3 Retour à la TdM

Sous Windows 3 et DOS, il est nécessaire de charger un pilote ASPI (Advanced SCSI Programming Interface) pour faire fonctionner nos programmes (et pour gérer correctement les supports amovibles, avec lesquels le Bios a souvent des difficultés).
Vous devez éventuellement rajouter une ou plusieurs lignes "device=" dans votre fichier config.sys. Ces lignes varient en fonction de votre configuration. Nous donnons ci-dessous un exemple de configuration pour une carte Adaptec AHA-154x.


Exemple de fichier config.sys pour une carte AHA-154x Retour à la TdM

...
device=c:\...\aspi4dos.sys /d
device=c:\...\aspidisk.sys /d
...

Ces deux lignes doivent se trouver dans cet ordre. La première correspond à une couche de type Bios, la seconde à une couche de type DOS. Le premier pilote ne doit jamais être chargé en mémoire haute. Le second peut l'être. Si vous chargez ces deux pilotes, vous n'avez nul besoin de charger les pilotes similaires fournis par les constructeurs (comme SyQuest, IOmega, etc.).


Installation des pilotes ASPI sous Windows 95/98/ME et Windows NT/2000 Retour à la TdM

Sous Windows 95/98/ME, votre ordinateur comporte déjà une couche ASPI. Cependant, il n'est pas inutile d'installer une version plus à jour (actuellement, version 4.60 [1021]).
Sous Windows NT/2000, par contre, il n'y a pas de pilote ASPI installé automatiquement par le système. Vous devez donc absolument procéder à l'installation. L'installation doit se faire depuis un compte d'administrateur (disposant des droits voulus pour installer un service) et vous devez ensuite redémarrer la machine.
Le programme d'installation de nos programmes installe sur votre disque dur, dans un sous-répertoire appelé ASPI, la dernière version des pilotes ASPI distribuée par Adaptec. Lancez simplement l'utilitaire aspiinst.exe pour ce faire.
Le programme d'installation de nos logiciels lance automatiquement cet utilitaire au cours de l'installation du programme, mais cette opération peut échouer pour un certain nombre de raisons, ce qui peut obliger à recommencer.


Codes d'erreur ASPI Retour à la TdM

Les codes d'erreur donnés dans la documentation du kit de programmation sont les suivants :

#define SS_INVALID_CMD		0x80		// Invalid ASPI command
#define SS_INVALID_HA		0x81		// Invalid host adapter number
#define SS_NO_DEVICE		0x82		// SCSI device not installed
#define SS_INVALID_SRB		0xE0		// Invalid parameter set in SRB
#define SS_OLD_MANAGER		0xE1		// ASPI manager doesn't support Windows
#define SS_ILLEGAL_MODE		0xE2		// Unsupported Windows mode
#define SS_NO_ASPI		0xE3		// No ASPI managers resident
#define SS_FAILED_INIT		0xE4		// ASPI for windows failed init
#define SS_ASPI_IS_BUSY		0xE5		// No resources available to execute cmd
#define SS_BUFFER_TO_BIG	0xE6		// Buffer size to big to handle!
#define SS_MISMATCHED_COMPONENTS    0xE7        // The DLLs/EXEs of ASPI don't version check
#define SS_NO_ADAPTERS              0xE8        // No host adapters to manage
#define SS_INSUFFICIENT_RESOURCES   0xE9        // Couldn't allocate resources needed to init
#define SS_ASPI_IS_SHUTDOWN         0xEA        // Call came to ASPI after PROCESS_DETACH
#define SS_BAD_INSTALL              0xEB        // The DLL or other components are installed wrong

Quelques commentaires :
E4 : Observé dans une configuration où la couche Aspi était correctement installée, mais où une ancienne DLL se trouvait dans le répertoire de lancement du programme. Lancez une recherche sur les quatre éléments de la couche Aspi et supprimez ou renommez tous ceux qui sont en dehors des répertoires spécifiés.
E8 : Observé sur un ordinateur qui n'avait qu'un lecteur de CD-ROM IDE/ATAPi et un lecteur de Zip, lui aussi ATAPI. Cette machine n'avait donc pas de carte SCSI (voir ci-dessus le commentaire "No host adapters to manage"). Nous avons ensuite constaté que l'installateur de la couche Aspi avait lui-même verrouillé l'accès aux disques ATAPI. Il semble que ce comportement (retour d'une erreur 0xE8) soit une nouveauté de la version 4.60[1021] du gestionnaire Aspi. Voir la solution à propos des lecteurs de CD-ROM invisibles.
EB : Ce code d'erreur semble être un code "attrappe-tout". Un utilisateur d'Easy CD Creator l'a signalé sur la liste de diffusion d'Adaptec/Roxio, mais la véritable cause n'a pas été élucidée.
Les autres codes ne nécessitent pas de commentaires spécifiques.


Comment programmer la couche ASPI ? Retour à la TdM

Pendant très longtemps la meilleure (et pratiquement la seule) source d'information sur la programmation de la couche ASPI a été le SDK ASPI distribué par Adaptec (et se trouvant également dans les SDK Windows 95 et ss. de Microsoft). On constate que, désormais, Adaptec a décidé de ne plus promouvoir activement l'utilisation de la couche ASPI, et le SDK ne peut plus être trouvé sur le site Internet de cette société.
Nous avons trouvé une nouvelle source d'information, proposée par Alvise Valsecchi. Ces pages présentent suffisamment d'informations pour vous mettre le pied à l'étrier (après avoir résolu le problème plus général d'installation).


La couche ASPI est-elle utilisée par l'OS ? Retour à la TdM

On entend souvent proclamer (notamment sur les forums de discussion consacrés à la gravure de CD-ROM) que Windows 2000 (ou XP) utiliserait ou non la couche ASPI, en aurait ou non « besoin ». C'est une manière fausse de présenter la question. Le système d'exploitation (qu'il soit livré avec la couche ASPI, comme dans le cas de Windows 95 ou 98, ou qu'il ne le soit pas, comme dans le cas de Windows NT) n'appelle jamais les fonctions de la couche ASPI, et n'en a donc pas besoin. Il se situe au-dessous de la couche ASPI.
C'est tout le contraire qui se produit : une application, pour accéder au matériel (un lecteur de disque, par exemple), appelle des fonctions de la couche ASPI. Ces fonctions peuvent ensuite accéder au matériel plus ou moins directement, en passant éventuellement par des services offerts par le système d'exploitation.
De ce fait, les incompatibilités qui peuvent exister entre une version de Windows et une version de la couche Aspi relèvent en fait de la responsabilité des applications (des programmes). Tout le reste n'est que littérature (ou discours de marketing ;-)).


Un nouveau pilote ASPI Retour à la TdM

Un nouveau pilote Aspi a été développé par Bertrand Danos. Voir le site FrogAspi.

  Retour à la TdM
 
Pierre Duhem (ex-Logiciels & Services Duhem)
3, rue Pierre Haret - F-75009 Paris (France) - Tél. (+33) [0]149 700 455
web : http://www.macdisk.com