DosOpen |
DOS : Ouvre |
---|---|
DOSCALLS.DLL | os2.h |
Syntaxe
USHORT DosOpen(PSZ FileName, PHFILE FileHandle, PUSHORT ActionTaken, ULONG FileSize, USHORT FileAttribute, USHORT OpenFlag, USHORT OpenMode, ULONG peaop2); |
Paramètres
Nom | Description | |||
---|---|---|---|---|
FileName | Ce paramètre permet d'indiquer l'adresse du nom de chemin ASCIZ du fichier ou du périphérique à ouvrir. | |||
FileHandle | Ce paramètre permet d'indiquer l'adresse de l'identificateur du descripteur Handle du fichier. Un identificateur de descripteur Handle de fichier de zéro est valide. | |||
ActionTaken | Ce paramètre permet d'indiquer l'adresse de la variable recevant la valeur spécifiant l'action entreprise par la fonction DosOpen. Si la fonction DosOpen échoue, cette valeur n'a aucune signification. Sinon, il s'agit de l'une des valeurs suivantes : | |||
Valeur | Constante | Description | ||
1 | FILE_EXISTED | Cette valeur permet d'indiquer que le fichier existait déjà. | ||
2 | FILE_CREATED | Cette valeur permet d'indiquer que le fichier a été créé. | ||
3 | FILE_TRUNCATED | Cette valeur permet d'indiquer que le fichier existait et a été changé à une taille donnée (le fichier a été remplacé). | ||
FileSize | Ce paramètre permet d'indiquer la nouvelle taille logique du fichier (fin des données, EOD), en octets. | |||
FileAttribute | Ce paramètre permet d'indiquer les informations d'attribut de fichier. Les valeurs possibles sont affichées dans la liste suivante : | |||
Bit | Constante | Description | ||
31 à 6 | Ces bits sont réservés et doivent être à 0. | |||
5 | FILE_ARCHIVED (0x00000020) | Ce bit permet d'indiquer que le fichier a été archivé. | ||
4 | FILE_DIRECTORY (0x00000010) | Ce bit permet d'indiquer que le fichier est un sous-répertoire. | ||
3 | Ce bit est réservé et doit être à 0. | |||
2 | FILE_SYSTEM (0x00000004) | Ce bit permet d'indiquer que le fichier est un fichier système. | ||
1 | FILE_HIDDEN (0x00000002) | Ce bit permet d'indiquer que le fichier est caché et n'apparaît pas dans une liste de répertoires. | ||
0 | FILE_READONLY (0x00000001) | Ce bit permet d'indiquer que le fichier peut être lu mais pas être écrit. | ||
Aucun bit | FILE_NORMAL (0x00000000) | Ce bit permet d'indiquer que le fichier peut être lu ou écrit. Les attributs de fichier s'appliquent uniquement si le fichier est créé. | ||
Ces bits peuvent être définis individuellement ou en combinaison. Par exemple, une valeur d'attribut de 0x00000021 (bits 5 et 0 définis sur 1) indique un fichier en lecture seulement ayant été archivé. | ||||
OpenFlag | Ce paramètre permet d'indiquer l'action à entreprendre selon que le fichier existe ou non. Les valeurs possibles sont affichées dans la liste suivante : | |||
Bit | Description | |||
31 à 8 | Ces bits sont réservés et doivent être à 0. | |||
7 à 4 | Ces bits permettent d'indiquer les drapeaux s'appliquant si le fichier n'existe pas : | |||
Valeur | Constante | Description | ||
0000 | OPEN_ACTION_FAIL_IF_NEW | Cette valeur permet d'indiquer qu'il faut ouvrir un fichier existant; échoue si le fichier n'existe pas. | ||
0001 | OPEN_ACTION_CREATE_IF_NEW | Cette valeur permet d'indiquer qu'il faut Créez le fichier s'il n'existe pas. | ||
3 à 0 | Ces bits permettent d'indiquer les drapeaux s'appliquant si le fichier existe déjà : | |||
Valeur | Constante | Description | ||
0000 | OPEN_ACTION_FAIL_IF_EXISTS | Cette valeur permet d'indiquer qu'il faut ouvrir le fichier; échoue si le fichier existe déjà. | ||
0001 | OPEN_ACTION_OPEN_IF_EXISTS | Cette valeur permet d'indiquer qu'il faut ouvrir le fichier s'il existe déjà. | ||
0010 | OPEN_ACTION_REPLACE_IF_EXISTS | Cette valeur permet d'indiquer qu'il faut remplacer le fichier s'il existe déjà. | ||
OpenMode | Ce paramètre permet d'indiquer le mode d'ouverture de la fonction. Les valeurs possibles sont affichées dans la liste suivante: : | |||
Bit | Description | |||
31 à 16 | Ces bits sont réservés et doivent être à 0. | |||
15 | Ce bit permet d'indiquer le mode de direction : OPEN_FLAGS_DASD (0x00008000) Drapeau d'ouverture directe : 0 pszFileName représente un fichier à ouvrir normalement. 1 pszFileName est "unitP:" (tel que C: ou A:), et représente un disque ou un volume de disquette monté à ouvrir pour un accès direct. |
|||
14 | Ce bit permet d'indiquer le drapeau d'écriture : OPEN_FLAGS_WRITE_THROUGH (0x00004000) Drapeau d'écriture immédiate : 0 Les écritures dans le fichier peuvent passer par le cache du pilote du système de fichiers. Le pilote du système de fichiers écrit les secteurs lorsque le cache est plein ou que le fichier est fermé. 1 Les écritures dans le fichier peuvent passer par le cache du pilote du système de fichiers, mais les secteurs sont écrits (l'opération d'entrée/sortie de fichier réelle est terminée) avant qu'un appel d'écriture synchronisé ne revienne. Cet état du fichier le définit comme un fichier synchronisé. Pour les fichiers synchronisés, ce bit doit être défini, car les données doivent être écrites sur le support pour les opérations d'écriture synchronisés. Cet indicateur de bit n'est pas hérité par les processus enfants. |
|||
13 | Ce bit permet d'indiquer le drapeau d'échec en cas d'erreur : OPEN_FLAGS_FAIL_ON_ERROR (0x00002000) Drapeau d'échec en cas d'erreur. Les erreurs d'entrée/sortie des supports sont traitées comme suit : Signalé via le gestionnaire d'erreurs critiques du système. Signalé directement à l'appelant au moyen d'un code retour. Les erreurs d'entrée/sortie de média générées via les commandes IOCtl de contrôle de disque logique de catégorie 08h sont toujours signalées directement à l'appelant par le biais du code retour. La fonction d'erreurs d'échec s'applique uniquement aux appels d'entrée/sortie de fichiers non basés sur IOCtl. Ce bit de drapeau n'est pas hérité par les processus enfants. |
|||
12 | Ce bit permet d'indiquer le drapeau de cache : OPEN_FLAGS_NO_CACHE (0x00001000) Indicateur No-Cache / Cache : 0 Le pilote du système de fichiers doit placer les données des opérations d'entrée/sortie dans son cache. 1 Les opérations d'entrée/sortie sur le fichier n'ont pas besoin d'être effectuées via le cache du pilote du système de fichiers. Le réglage de ce bit détermine si les pilotes du système de fichiers doivent placer les données dans le cache. Comme le bit d'écriture directe, il s'agit d'un bit par identificateur de descripteur Handle et n'est pas hérité par les processus enfants. |
|||
11 | Ce bit est réservé et doit être à 0. | |||
10 à 8 | Ces bits permet d'indiquer la localité des drapeaux de référence contenant des informations sur la manière dont l'application doit accéder au fichier. Les valeurs sont les suivantes : 000 OPEN_FLAGS_NO_LOCALITY (0x00000000) Aucune localité connue. 001 OPEN_FLAGS_SEQUENTIAL (0x00000100) Accès principalement séquentiel. 010 OPEN_FLAGS_RANDOM (0x00000200) Accès principalement aléatoire. 011 OPEN_FLAGS_RANDOMSEQUENTIAL (0x00000300) Aléatoire avec une localité. |
|||
7 | Ce bit permet d'indiquer la drapeau d'héritage : OPEN_FLAGS_NOINHERIT (0x00000080) Drapeau d'héritage : 0 Le descripteur de fichier est hérité par un processus créé à partir d'un appel à DosExecPgm. 1 Le descripteur de fichier est privé du processus en cours. Ce bit n'est pas hérité par les processus enfants. |
|||
6 à 4 | Ces bits permet d'indiquer les drapeaux du mode de partage. Ces bits définissent toutes les restrictions d'accès aux fichiers imposées par l'appelant sur d'autres
processus. Les valeurs sont les suivantes : 001 OPEN_SHARE_DENYREADWRITE (0x00000010) Refuser l'accès en lecture / écriture. 010 OPEN_SHARE_DENYWRITE (0x00000020) Refuser l'accès en écriture. 011 OPEN_SHARE_DENYREAD (0x00000030) Refuser l'accès en lecture. 100 OPEN_SHARE_DENYNONE (0x00000040) Ne refusez ni l'accès en lecture ni en écriture (aucun refus). Toute autre valeur n'est pas valide. |
|||
3 | Ce bit est réservé et doit être à 0. | |||
2 à 0 | Ces bits permet d'indiquer les drapeaux de mode d'accès. Ce champ définit l'accès au fichier requis par l'appelant. Les valeurs sont les suivantes : 000 OPEN_ACCESS_READONLY (0x00000000) Accès en lecture seule 001 OPEN_ACCESS_WRITEONLY (0x00000001) Accès en écriture seule 010 OPEN_ACCESS_READWRITE (0x00000002) Accès en lecture et écriture. Toute autre valeur n'est pas valide, de même que toute autre combinaison. Le partage de fichiers nécessite la coopération de processus de partage. Cette coopération se communique via des modes de partage et d'accès. Toutes les restrictions de partage placées sur un fichier ouvert par un processus sont supprimées lorsque le processus ferme le fichier avec une demande de fonction DosClose. Mode de partage : spécifie le type d'accès aux fichiers. |
|||
peaop2 | Ce paramètre permet d'indiquer les attributs étendus. Ce paramètre est uniquement utilisé pour spécifier des attributs étendus (EA) lors de la création d'un nouveau fichier, du remplacement d'un fichier existant ou de la troncature d'un fichier existant. Lors de l'ouverture de fichiers existants, il doit être défini sur null. Entrée : l'adresse du tampon d'attribut étendu, contenant une structure EAOP2. Le paramètre fpFEA2List pointe vers une zone de données où se trouve la liste FEA2 appropriée. Les paramètres fpGEA2List et oError sont ignorés. Sortie : Les paramètres fpGEA2List et fpFEA2List sont inchangées. La zone vers laquelle pointe fpFEA2List est inchangée. Si une erreur s'est produite pendant l'ensemble, oError est le déplacer de l'entrée FEA2 où l'erreur s'est produite. Le code retour de DosOpen est le code d'erreur pour cette condition d'erreur. Si aucune erreur ne s'est produite, oError n'est pas défini. Si peaop2 est zéro, alors aucun attribut étendu n'est défini pour le fichier. Si les attributs étendus ne doivent pas être définis ou modifiés, alors le pointeur peaop2 doit être défini sur zéro. |
Retour
Valeur | Constante | Description |
---|---|---|
0 | NO_ERROR | Cette valeur permet d'indiquer que l'opération s'est correctement effectué |
2 | ERROR_FILE_NOT_FOUND | Cette valeur permet d'indiquer qu'une erreur de fichier introuvable s'est produite. |
3 | ERROR_PATH_NOT_FOUND | Cette valeur permet d'indiquer qu'une erreur de chemin introuvable s'est produite. |
4 | ERROR_TOO_MANY_OPEN_FILES | Cette valeur permet d'indiquer qu'une erreur de trop de fichier ouvert simultanément s'est produite. |
5 | ERROR_ACCESS_DENIED | Cette valeur permet d'indiquer qu'une erreur d'accès refusé s'est produite. |
12 | ERROR_INVALID_ACCESS | Cette valeur permet d'indiquer une erreur d'accès invalide. |
26 | ERROR_NOT_DOS_DISK | Cette valeur permet d'indiquer qu'une erreur de disque non-DOS s'est produite. |
32 | ERROR_SHARING_VIOLATION | Cette valeur permet d'indiquer qu'une erreur de violation de partage s'est produite. |
36 | ERROR_SHARING_BUFFER_EXCEEDED | Cette valeur permet d'indiquer qu'une erreur de dépassement de limite de tampon partagé s'est produite. |
82 | ERROR_CANNOT_MAKE | Cette valeur permet d'indiquer qu'il n'est pas possible de le créer. |
87 | ERROR_INVALID_PARAMETER | Cette valeur permet d'indiquer qu'un ou plusieurs des paramètres contient une valeur illégale. |
99 | ERROR_DEVICE_IN_USE | Cette valeur permet d'indiquer que le périphérique est actuellement en utilisation. |
108 | ERROR_DRIVE_LOCKED | Cette valeur permet d'indiquer qu'une erreur d'unité verrouillé s'est produite. |
110 | ERROR_OPEN_FAILED | Cette valeur permet d'indiquer un échec d'ouverture de fichier ou de périphérique. |
112 | ERROR_DISK_FULL | Cette valeur permet d'indiquer que l'unité de disque de destination est plein. |
206 | ERROR_FILENAME_EXCED_RANGE | Cette valeur permet d'indiquer une erreur de nom de fichier excédant la limite du rang. |
231 | ERROR_PIPE_BUSY | Cette valeur permet d'indiquer qu'une erreur de tuyau occupé s'est produite. |
Description
Cette fonction permet d'ouvrir un fichier ou un périphérique pour des entrées/sorties d'applications.
Remarques
- Une demande à la fonction DosOpen réussie renvoie un identificateur de descripteur Handle pour accéder au fichier. Un descripteur de fichier Handle de zéro est valide. Le pointeur de lecture et d'écriture est défini sur le premier octet du fichier. La position du pointeur peut être modifiée avec DosSetFilePtr ou par des opérations de lecture et d'écriture sur le fichier.
- La date et l'heure du fichier peuvent être interrogées avec la fonction DosQueryFileInfo. Ils sont définis avec la fonction DosSetFileInfo.
- L'attribut en lecture seulement d'un fichier peut être défini avec la commande ATTRIB du système d'exploitation OS/2.
- Le paramètre FileAttribute ne peut pas être défini le nom d'un volume. Pour définir les informations du nom de volume, utilisez plutôt la fonction DosSetFSInfo avec un numéro d'unité logique. Les noms de volume ne peuvent pas être ouvertes.
- Le paramètre FileSize affecte la taille du fichier uniquement lorsque le fichier est nouveau ou remplacé. Si un fichier existant est ouvert, le paramètre FileSize est ignoré. Pour modifier la taille du fichier existant, utilisez plutôt la fonction DosSetFileSize.
- La valeur dans le paramètre FileSize est une taille recommandée. Si la taille maximale ne peut pas être allouée, la demande ouverte peut toujours réussir. Le système de fichiers tente raisonnablement d'allouer la nouvelle taille dans une zone aussi proche que possible du support. Lorsque la taille du fichier est étendue, les valeurs des nouveaux octets ne sont pas définies.
- Le bit d'ouverture directe offre un accès direct à l'intégralité d'un disque ou d'un volume de disquette, indépendamment du système de fichiers. Ce mode d'ouverture du volume actuellement sur l'unité renvoie un identificateur de descripteur Handle à la fonction appelante; le descripteur représente le volume logique sous forme de fichier unique. La fonction appelante spécifie cet identificateur de descripteur Handle avec une requête à la fonction DosDevIOCtl de catégorie 8, DSK_LOCKDRIVE pour empêcher d'autres processus d'accéder au volume logique. Lorsque vous avez terminé d'utiliser le volume logique, faite une demande à la fonction DosDevIOCtl de catégorie 8, DSK_UNLOCKDRIVE pour autoriser d'autres processus à accéder au volume logique.
- Les bits d'état de l'identificateur de descripteur Handle de fichier peuvent être définis par DosOpen et DosSetFHState. Une application peut interroger les bits d'état de l'identificateur de descripteur Handle de fichier, ainsi que le reste du champ Open Mode, en appelant la fonction DosQueryFHState.
- Vous pouvez utiliser une structure EAOP2 pour définir des attributs étendus dans peaop2 lors de la création d'un fichier, du remplacement d'un fichier existant ou de la troncature d'un fichier existant. Aucun attribut étendu n'est défini lorsqu'un fichier existant vient d'être ouvert.
- Une opération de remplacement équivaut logiquement à la suppression et à la recréation atomiques du fichier. Cette situation signifie que tous les attributs étendus associés au fichier sont également supprimés avant la recréation du fichier.
Voir également
Langage de programmation - C pour OS/2 - DosClose
Langage de programmation - C pour OS/2 - DosDevIOCtl
Langage de programmation - C pour OS/2 - DosDupHandle
Langage de programmation - C pour OS/2 - DosQueryHType
Langage de programmation - C pour OS/2 - DosSetFileInfo
Langage de programmation - C pour OS/2 - DosSetFilePtr
Langage de programmation - C pour OS/2 - DosSetFileSize
Langage de programmation - C pour OS/2 - DosSetMaxFH
Langage de programmation - C pour OS/2 - DosSetRelMaxFH
Système d'exploitation - OS/2 - Introduction
Dernière mise à jour : Lundi, le 19 juillet 2010