Interruption 21h |
Fonction 44h, Sous-fonction 02h |
IOCTL: Lecture de données par bloc |
|---|---|---|
| DOS 2.0+, OS/2, Windows NT | ||
Description
Cette fonction de type IOCTL permet d'effectuer la lecture de données par bloc.
Entrée
| Registre | Valeur ou description |
|---|---|
| AX | 4402h |
| BX | Handle |
| CX | Longueur du tampon ou de la structure de réquisition |
| DS:DX | Cette paire de registre permet d'indiquer l'adresse d'un pointeur long (FAR) sur le tampon ou le bloc de réquisition (remarque) |
Sortie
| Registre | Valeur ou description | |||
|---|---|---|---|---|
| FC | Ce registre de drapeau de retenue permet d'indiquer le résultat de l'opération : | |||
| Valeur | Description | |||
| 0 | Cette valeur permet d'indiquer que l'opération a été un succès, dans ce cas : | |||
| Registre | Description | |||
| AX | Ce registre permet d'indiquer le nombre d'octets transférés | |||
| 1 | Cette valeur permet d'indiquer qu'une erreur s'est produite et dans ce cas : | |||
| Registre | Description | |||
| AX | Ce registre permet d'indiquer le code d'erreur : | |||
| Code | Description | |||
| 1 | Cette erreur indique que la fonction est inconnu | |||
| 6 | Cette erreur permet d'indiquer que le Handle est inconnu | |||
Remarques
- Si elle est prise en charge par le pilote, cette sous-fonction peut être utilisée pour obtenir des informations d'état et de disponibilité dépendant du matériel n'étant pas prises en charge par d'autres appels de fonction DOS.
- Les pilotes de périphérique de caractères ne sont pas requis pour prendre en charge la sous-fonction 02h de IOCTL. Un programme peut tester le bit 14 du mot d'informations de périphérique renvoyé par la sous-fonction 00h de IOCTL pour déterminer si le pilote prend en charge cette sous-fonction. Si la sous-fonction 02h est demandée et que le pilote n'a pas la capacité de traiter les données de contrôle, le contrôle revient au programme avec le drapeau de retenue fixé à 1 et le code d'erreur 0001h (fonction non valide) dans le registre AX.
- Pour que la fonction puissent appeler un bloc de réquisition «GetProtocolManagerInfo», votre tampon devra avoir la structure suivante :
- Pour que la fonction puissent appeler un bloc de réquisition «RegisterModule», votre tampon devra avoir la structure suivante :
- Pour que la fonction puissent appeler un bloc de réquisition «BindAndStart», votre tampon devra avoir la structure suivante :
- Pour que la fonction puissent appeler un bloc de réquisition «GetProtocolManagerLinkage», votre tampon devra avoir la structure suivante:
- Pour que la fonction puissent appeler un bloc de réquisition «GetProtocolIniPath», votre tampon devra avoir la structure suivante:
- Pour que la fonction puissent appeler un bloc de réquisition «RegisterProtocolManagerInfo», votre tampon devra avoir la structure suivante:
- Pour que la fonction puissent appeler un bloc de réquisition «InitAndRegister», votre tampon devra avoir la structure suivante:
- Pour que la fonction puissent appeler un bloc de réquisition «UnbindAndStop», votre tampon devra avoir la structure suivante:
- Pour que la fonction puissent appeler un bloc de réquisition «BindStatus», votre tampon devra avoir la structure suivante:
- Pour que la fonction puissent appeler un bloc de réquisition «BindStatus», votre tampon devra avoir la structure suivante:
- Voici la liste des codes d'état:
- Voici la structure d'une table de caractéristique commune :
- Voici les valeurs des «limite de niveau du protocole» :
- Voici la structure d'une table d'envoi:
- Voici la structure des spécifications de la table des caractéristiques MAC:
- Voici la structure des spécifications de la table des caractéristiques du réseau en BIOS (NetBIOS):
| Déplacement | Longueur | Description |
|---|---|---|
| 00h | 2 octets (1 mot) | Ce champ contient la valeur 01h. |
| 02h | 2 octets (1 mot) | Ce champ retourne l'état de retour (voir remarque). |
| 04h | 4 octets (2 mots) | Ce champ retourne un pointeur représentant la structure de la configuration utilisateur. |
| 08h | 4 octets (2 mots) | Ce champ est réservé pour une utilisation interne ou futur |
| 0Ch | 2 octets (mot) | Ce champ retourne la version, en format BCD, du NDIS dans lequel le gestionnaire de protocole est chargée. |
| Déplacement | Longueur | Description |
|---|---|---|
| 00h | 2 octets (1 mot) | Ce champ contient la valeur 02h. |
| 02h | 2 octets (1 mot) | Ce champ retourne l'état de retour (voir remarque). |
| 04h | 4 octets (2 mots) | Ce champ retourne un pointeur représentant la structure d'un module de caractéristiques commune. |
| 08h | 4 octets (2 mots) | Ce champ retourne un pointeur sur une liste de modules dans lequel il est renfermé |
| 0Ch | 2 octets (mot) | Ce champ n'est pas utilisé. |
| Déplacement | Longueur | Description |
|---|---|---|
| 00h | 2 octets (1 mot) | Ce champ contient la valeur 03h. |
| 02h | 2 octets (1 mot) | Ce champ retourne l'état de retour (voir remarque). |
| 04h | 4 octets (2 mots) | Ce champ retourne l'adresse d'une entrée d'une procédure virtuel dans la structure «FailingModules». |
| 08h | 6 octets (3 mots) | Ce champ n'est pas utilisé. |
| Déplacement | Longueur | Description |
|---|---|---|
| 00h | 2 octets (1 mot) | Ce champ contient la valeur 04h. |
| 02h | 2 octets (1 mot) | Ce champ retourne l'état de retour (voir remarque). |
| 04h | 4 octets (2 mots) | Ce champ retourne un point d'expédition. Ce point d'expédition peut être appeler à la place de l'utilisation du IOCTL comme suit: Dans la Pile: Mot Segment de donnée du gestionnaire de protocole Doublemot Pointeur sur le bloc de réquisition Retour: AX=État de retour et la pile est désempilée |
| 08h | 4 octets (2 mots) | Ce champ n'est pas utilisé. |
| 0Ch | 2 octets (mot) | Ce champ retourne le segment de donnée du gestionnaire de protocole. |
| Déplacement | Longueur | Description |
|---|---|---|
| 00h | 2 octets (1 mot) | Ce champ contient la valeur 05h. |
| 02h | 2 octets (1 mot) | Ce champ retourne l'état de retour (voir remarque). |
| 04h | 4 octets (2 mots) | Ce champ retourne un pointeur sur un tampon contenant le chemin ASCIIZ du fichier de configuration «PROTOCOL.INI». |
| 08h | 4 octets (2 mots) | Ce champ n'est pas utilisé. |
| 0Ch | 2 octets (mot) | Ce champ retourne la longueur du tampon. |
| Déplacement | Longueur | Description |
|---|---|---|
| 00h | 2 octets (1 mot) | Ce champ contient la valeur 06h. |
| 02h | 2 octets (1 mot) | Ce champ retourne l'état de retour (voir remarque). |
| 04h | 4 octets (2 mots) | Ce champ retourne un pointeur sur une structure contenant l'analyse qu'utilise le fichier de configuration. |
| 08h | 4 octets (2 mots) | Ce champ n'est pas utilisé. |
| 0Ch | 2 octets (mot) | Ce champ retourne la longueur de la structure. |
| Déplacement | Longueur | Description |
|---|---|---|
| 00h | 2 octets (1 mot) | Ce champ contient la valeur 07h. |
| 02h | 2 octets (1 mot) | Ce champ retourne l'état de retour (voir remarque). |
| 04h | 4 octets (2 mots) | Ce champ n'est pas utilisé. |
| 08h | 4 octets (2 mots) | Ce champ contient un pointeur sur un nom ASCIIZ d'un module d'initialisation devant être préattacher. |
| 0Ch | 2 octets (mot) | Ce champ n'est pas utilisé. |
| Déplacement | Longueur | Description |
|---|---|---|
| 00h | 2 octets (1 mot) | Ce champ contient la valeur 08h. |
| 02h | 2 octets (1 mot) | Ce champ retourne l'état de retour (voir remarque). |
| 04h | 4 octets (2 mots) | Ce champ contient une adresse vers un module d'échec pour le réattachement et démarrage (BindAndStop). |
| 08h | 4 octets (2 mots) | Ce champ contient un pointeur de détachement. S'il n'est pas égal à 0000h:0000h, pointe sur nom ASCIIZ d'un module détacher. S'il est égal 0000h:0000h, termine et fixe la dynamique précédente. |
| 0Ch | 2 octets (mot) | Ce champ n'est pas utilisé. |
| Déplacement | Longueur | Description |
|---|---|---|
| 00h | 2 octets (1 mot) | Ce champ contient la valeur 09h. |
| 02h | 2 octets (1 mot) | Ce champ retourne l'état de retour (voir remarque). |
| 04h | 4 octets (2 mots) | Ce champ contient une adresse de la racine de l'arbre de répertoire. Doit être 0000h:0000h, au retour pointe sur la racine de l'arbre de répertoire. |
| 08h | 4 octets (2 mots) | Ce champ contient doit contenir 0000h:0000h. |
| 0Ch | 2 octets (mot) | Ce champ est utilisé pour un usage interne. |
| Déplacement | Longueur | Description |
|---|---|---|
| 00h | 2 octets (1 mot) | Ce champ contient la valeur 0Ah. |
| 02h | 2 octets (1 mot) | Ce champ retourne l'état de retour (voir remarque). |
| 04h | 4 octets (2 mots) | Ce champ doit contenir 0000h:0000h. |
| 08h | 4 octets (2 mots) | Ce champ contient un pointeur sur le nom du module de format ASCIIZ ayant une taille de 16 octets. |
| 0Ch | 2 octets (mot) | Ce champ doit contenir 0000h. |
| Code d'état | Description |
|---|---|
| 0000h | Ce code d'état indique qu'aucune erreur n'est signalé. |
| 0001h | Ce code d'état indique un état d'attente de relâchement du protocole retenant le contrôle des données du tampon. |
| 0002h | Ce code d'état indique une réquisition de la queue. |
| 0003h | Ce code d'état indique que le format est inconnu. |
| 0004h | Ce code d'état indique que le format est rejeté. |
| 0005h | Ce code d'état indique que le format doit être avant. |
| 0006h | Ce code d'état indique un manque de ressource. |
| 0007h | Ce code d'état indique que le paramètre n'est pas valide. |
| 0008h | Ce code d'état indique que la fonction n'est pas valide. |
| 0009h | Ce code d'état indique que la fonction n'est pas supporté. |
| 000Ah | Ce code d'état indique une erreur au niveau matériel. |
| 000Bh | Ce code d'état indique une erreur au niveau de la transmission. |
| 000Bh | Ce code d'état indique que la destination n'est pas reconnue. |
| 000Dh | Ce code d'état indique que le tampon est trop petit. |
| 0020h | Ce code d'état indique que le pilote est déjà prêt à redémarrer. |
| 0021h | Ce code d'état indique que le détachement n'a pas être effectuer totalement. |
| 0022h | Ce code d'état indique que le pilote n'est pas été initialisé. |
| 0023h | Ce code d'état indique que le matériel n'est pas détecté ou absent. |
| 0024h | Ce code d'état indique que le matériel est défectueux. |
| 0025h | Ce code d'état indique que la configuration n'est pas valide. |
| 0026h | Ce code d'état indique qu'un conflit existe entre certaines interruptions. |
| 0027h | Ce code d'état indique que l'adresse MAC n'est pas compatible. |
| 0028h | Ce code d'état indique qu'un échec a eu lieu lors de l'initialisation. |
| 0029h | Ce code d'état indique qu'il n'y a pas de reliable. |
| 002Ah | Ce code d'état indique que le réseau ne peut pas être détaché. |
| 002Bh | Ce code d'état indique que la version de système d'exploitation n'est pas compatible. |
| 002Ch | Ce code d'état indique que les données sont déjà enregistrées. |
| 002Dh | Ce code d'état indique que le chemin ou le répertoire n'a pas été trouvé. |
| 002Eh | Ce code d'état indique que la quantité de mémoire n'est pas suffisante. |
| 002Fh | Ce code d'état indique que l'information n'est pas trouvable. |
| 00FFh | Ce code d'état indique échec général. |
| F000h à FFFFh | Ces codes d'état indique sont spécifiques aux manufacturiers. |
| Déplacement | Longueur | Description | ||
|---|---|---|---|---|
| 00h | 2 octets (1 mot) | Ce champ contient la taille de la table en octets. | ||
| 02h | 1 octet | Ce champ contient la version majeur du NDIS. | ||
| 03h | 1 octet | Ce champ contient la version mineur du NDIS. | ||
| 04h | 2 octets (mot) | Ce champ est réservé pour une utilisation interne ou futur. | ||
| 06h | 1 octet | Ce champ contient la version majeur du module. | ||
| 07h | 1 octet | Ce champ contient la version mineur du module. | ||
| 08h | 4 octets (2 mots) | Ce champ contient les drapeaux du module de fonction: | ||
| Bits | Description | |||
| 0 | Ce bit indique s'il vaut 1 que le détachement des limites hautes est supportée | |||
| 1 | Ce bit indique s'il vaut 1 que le détachement des limites basses est supportée | |||
| 2 | Ce bit indique s'il vaut 1 s'il y a des limitations dynamiques | |||
| 0Ch | 16 octets | Ce champ contient le nom du module en format ASCIIZ | ||
| 1Ch | 1 octet | Ce champ contient la haute limite de niveau du protocole (voir ci-dessous) | ||
| 1Dh | 1 octet | Ce champs contient la haute limite du type d'interface: | ||
| Cas | Action | |||
| Pour les MACs | 1=MAC | |||
| Pour des données liées et transports | Doit être défini | |||
| Pour une session | 1=NCB | |||
| Chaque niveau | 0=privée (Définition ISV) | |||
| 1Eh | 1 octet | Ce champ contient la basse limite de niveau du protocole (même chose qu'au déplacement 1Ch). | ||
| 1Fh | 1 octet | Ce champ contient la basse limite du type d'interface (même chose qu'au déplacement 1Dh). | ||
| 20h | 2 octets (mot) | Ce champ contient l'identificateur du module remplit dans un gestionnaire de protocole. | ||
| 22h | 2 octets (mot) | Ce champ contient le segment de données du module (DS du module). | ||
| 24h | 4 octets (2 mots) | Ce champ contient un pointeur d'entrée d'une réquisition du système. | ||
| 28h | 4 octets (2 mots) | Ce champ contient un pointeur sur les caractéristiques des spécifications de service (0000h:0000h s'il n'y en a pas). | ||
| 2Ch | 4 octets (2 mots) | Ce champ contient un pointeur sur l'état des spécifications de service (0000h:0000h s'il n'y en a pas). | ||
| 30h | 4 octets (2 mots) | Ce champ contient un pointeur sur la partie haute de la table d'envoi (voir ci-dessous) (0000h:0000h s'il n'y en a pas). | ||
| 34h | 4 octets (2 mots) | Ce champ contient un pointeur sur la partie basse de la table d'envoi (voir ci-dessous) (0000h:0000h s'il n'y en a pas). | ||
| 38h | 8 octets (4 mots) | Ce champ contient toujours la valeur 0. | ||
| Code | Description |
|---|---|
| 00h | Ce code indique un niveau physique. |
| 01h | Ce code indique un contrôle d'accès média. |
| 02h | Ce code indique un lien de données. |
| 03h | Ce code indique un réseau. |
| 04h | Ce code indique un transport. |
| 05h | Ce code indique une session. |
| FFh | Ce code indique qu'il n'y a pas de spécification. |
| Déplacement | Longueur | Description |
|---|---|---|
| 00h | 4 octets (2 mots) | Ce champ contient la table de caractéristique commune (voir plus haute). |
| 04h | 4 octets (2 mots) | Ce champ contient une structuration interne. |
| 08h | 4 octets (2 mots) | Ce champ contient une fonction interne (appeler avec 12 octets dans les arguments de la pile). |
| 0Ch | 4 octets (2 mots) | Ce champ contient une fonction interne (appeler avec 10 octets dans les arguments de la pile). |
| 10h | 4 octets (2 mots) | Ce champ contient une fonction interne (appeler avec 16 octets dans les arguments de la pile). |
| 14h | 4 octets (2 mots) | Ce champ contient une fonction interne (appeler avec 4 octets dans les arguments de la pile). |
| 18h | 4 octets (2 mots) | Ce champ contient une fonction interne (appeler avec 18 octets dans les arguments de la pile). |
| 1Ch | 4 octets (2 mots) | Ce champ contient une fonction interne (appeler avec 12 octets dans les arguments de la pile). |
| Déplacement | Longueur | Description | ||
|---|---|---|---|---|
| 00h | 2 octets (1 mot) | Ce champ contient la taille de la table en octets. | ||
| 02h | 16 octets (8 mots) | Ce champ contient le type de nom MAC en format ASCIIZ: | ||
| Code | Nom | |||
| 802.3 | Ethernet | |||
| 802.4 | Large bande | |||
| 802.5 | Anneau à jeton «TokenRing» | |||
| 802.6 | SMDS, DBDQ | |||
| DIX | DIX | |||
| DIX+802.3 | DIX+802.3 | |||
| APPLETALK | AppleTalk | |||
| ARCNET | ArcNet | |||
| FDDI | FDDI | |||
| SDLC | SDLC | |||
| BSC | BSC | |||
| HDLC | HDLC | |||
| ISDN | ISDN | |||
| 12h | 2 octets (mot) | Ce champ contient la longueur des adresses de station en octets. | ||
| 14h | 16 octets (8 mots) | Ce champ contient l'adresse de la station permanente. | ||
| 24h | 16 octets (8 mots) | Ce champ contient l'adresse de la station courante. | ||
| 34h | 4 octets (2 mots) | Ce champ contient l'adresse de l'adaptateur des fonctionnalités courante (00000000h si aucune). | ||
| 38h | 4 octets (2 mots) | Ce champ contient l'adresse de la liste du «MultiCast». | ||
| 3Ch | 4 octets (2 mots) | Ce champ contient la vitesse de la transmission en bits/seconde (BAUD). | ||
| 40h | 4 octets (2 mots) | Ce champ contient le drapeau de service: | ||
| Bits | Description | |||
| 0 | Ce bit indique qu'il supporte le «Broadcast» | |||
| 1 | Ce bit indique qu'il supporte le «MultiCast» | |||
| 2 | Ce bit indique qu'il supporte les adressages des fonctionnalités de groupe | |||
| 3 | Ce bit indique qu'il supporte le mode de conduction léger | |||
| 4 | Ce bit indique l'adresse de la station logiciel est fixable | |||
| 5 | Ce bit indique les statistiques courante | |||
| 6 | Ce bit indique qu'il supporte le diagnostique d'initialisation | |||
| 7 | Ce bit indique qu'un signal est reçu au lieu d'une indication «ReceiveLookahead» | |||
| 8 | Ce bit indique que l'adresse MAC fait premièrement une indication de chaîne | |||
| 9 | Ce bit indique s'il supporte le routage IBM | |||
| 10 | Ce bit indique s'il supporte la réinitialisation MAC | |||
| 11 | Ce bit indique s'il supporte les adaptateurs OPEN/CLOSE | |||
| 12 | Ce bit indique s'il supporte le réquisition d'interruption | |||
| 13 | Ce bit indique s'il supporte le pont de la routine source | |||
| 14 | Ce bit indique s'il supporte les adresses virtuel GDT (version OS/2) | |||
| 15 | Ce bit fixe plusieurs transfère de données disponible pendant une simple indication. | |||
| 16 | Ce bit du MAC normal fixe la taille du format (FrameSize) à 0 dans un «ReceiveLookahead» | |||
| 44h | 2 octets (mot) | Ce champ contient la taille maximal du format/chassie (Frame) lequel peut émettre ou recevoir. | ||
| 46h | 4 octets (2 mots) | Ce champ contient la capacité total du tampon de transmission en octets. | ||
| 4Ah | 2 octets (mot) | Ce champ contient la taille d'allocation du tampon du bloc de transmission en octets. | ||
| 4Ch | 4 octets (2 mots) | Ce champ contient la capacité total d'envoi de tampon en octets. | ||
| 50h | 2 octets (mot) | Ce champ contient la taille de l'allocation du bloc de réception en octets. | ||
| 52h | 3 octets | Ce champ contient le code du manufacturier IEEE. | ||
| 55h | 1 octet | Ce champ contient le code de l'adaptateur du manufacturier. | ||
| 56h | 4 octets (2 mots) | Ce champ contient un pointeur sur la description du manufacturier en format ASCIIZ. | ||
| 5Ah | 2 octets (mot) | Ce champ indique l'adaptateur qu'utilise l'IRQ. | ||
| 5Ch | 2 octets (mot) | Ce champ indique la profondeur de la queue de transmission. | ||
| 5Eh | 2 octets (mot) | Ce champ indique le nombre maximal de bloc de donnée dans un tampon de description supportée. | ||
| 60h | N octets | Ce champ contient les informations spécifique au manufacturier. | ||
| Déplacement | Longueur | Description |
|---|---|---|
| 00h | 2 octets (mot) | Ce champ contient la longueur de la table en octets. |
| 02h | 16 octets (8 mots) | Ce champ contient le type de nom (en format ASCIIZ) du module NetBIOS. |
| 12h | 2 octets (mot) | Ce champ contient le code du module NetBIOS. |
| 14h | N octets | Ce champ contient les informations spécifique au manufacturier. |
Références
Aide-mémoire des interruptions du MS-DOS, Edition Marabout, Philippe Mercier, 1990, ISBN: 2-501-01297-6, page 227 à 230.
Dernière mise à jour : Jeudi, le 3 mars 2016
