Interruption 21h |
Fonction 44h, Sous-fonction 03h |
IOCTL: Écriture de données par bloc |
---|---|---|
DOS 2.0+, OS/2, Windows NT |
Description
Cette fonction de type IOCTL permet d'effectuer l'écriture de données par bloc. Ainsi, elle transfert les données de contrôle d'une application vers un pilote de périphérique de caractères. La longueur et le contenu des données sont spécifiques à chaque pilote de périphérique et ne respectent aucun format standard. Cette fonction n'entraîne pas nécessairement de sortie vers le périphérique physique.
Entrée
Registre | Valeur ou description |
---|---|
AX | 4403h |
BX | Ce registre permet d'indiquer l'identificateur de descripteur Handle |
CX | Ce registre permet d'indiquer la 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 | |||
2 | Cette erreur permet d'indiquer que le fichier est introuvable |
Remarques
- Si elle est prise en charge par le pilote, cette sous-fonction peut être utilisée pour demander des opérations dépendant du matériel (telles que la définition du débit en bauds pour un port série) 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 03h 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 03h est demandée et que le pilote n'a pas la capacité de traiter les données de contrôle, le contrôle retourne au programme avec le drapeau de retenue défini 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 champs n'est pas utilisé. |
0Ch | 2 octets (mot) | Ce champs 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 champ 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'à le déplacement 1Ch). | ||
1Fh | 1 octet | Ce champ contient la basse limite du type d'interface (même chose qu'à le 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 champs 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