Jump to content

DosMkDir2: Difference between revisions

From EDM2
Ak120 (talk | contribs)
Ak120 (talk | contribs)
mNo edit summary
Line 1: Line 1:
[[image:legacy.png]]
This call creates a subdirectory that has extended attributes associated with it.
This function has been renamed to "[[OS2_API:CPI:DosCreateDir|DosCreateDir]]". [https://books.google.com.ec/books?id=u7WbsmbttwYC&pg=PT372&lpg=PT372&dq#v=onepage&q&f=false]


==Description==
This function has been renamed to "[[DosCreateDir]]".
This call creates a subdirectory that has extended attributes associated with it.


==Syntax==
==Syntax==
<PRE>
  DosMkDir2 (DirName, EABuf, Reserved)
  DosMkDir2


    (DirName, EABuf, Reserved)
</PRE>
==Parameters==
==Parameters==
;  DirName (PSZ) - input : Address of the ASCIIZ directory path name, which may or may not contain a drive specification. If no drive is specified, the current drive is assumed.
;  DirName (PSZ) - input : Address of the ASCIIZ directory path name, which may or may not contain a drive specification. If no drive is specified, the current drive is assumed.
Line 51: Line 46:


; Reserved (ULONG) - input : Reserved and must be set to zero.
; Reserved (ULONG) - input : Reserved and must be set to zero.


==Return Code==
==Return Code==
  rc (USHORT) - return
  rc (USHORT) - return
Return code descriptions are:
Return code descriptions are:
* 0          NO_ERROR  
* 0          NO_ERROR  
* 3          ERROR_PATH_NOT_FOUND  
* 3          ERROR_PATH_NOT_FOUND  
Line 67: Line 59:
* 254        ERROR_INVALID_EA_NAME  
* 254        ERROR_INVALID_EA_NAME  
* 255        ERROR_EA_LIST_INCONSISTENT
* 255        ERROR_EA_LIST_INCONSISTENT


==Remarks==
==Remarks==
Line 179: Line 170:
</PRE>
</PRE>
==Related Functions==
==Related Functions==
*  
* [[DosMkDir]]
 


[[Category:The OS/2 API Project]]
[[Category:Dos]]

Revision as of 10:11, 14 February 2017

This call creates a subdirectory that has extended attributes associated with it.

This function has been renamed to "DosCreateDir".

Syntax

DosMkDir2 (DirName, EABuf, Reserved)

Parameters

DirName (PSZ) - input
Address of the ASCIIZ directory path name, which may or may not contain a drive specification. If no drive is specified, the current drive is assumed.

DosQSysInfo is called by an application during initialization to determine the maximum path length allowed by OS/2.

EABuf (PEAOP) - input/output
Address of the extended attribute buffer, which contains an EAOP structure. An EAOP structure has the following format:

fpGEAList (PGEALIST) : Address of GEAList. GEAList is a packed array of variable length "get EA" structures, each containing an EA name and the length of the name.

fpFEAList (PFEALIST) : Address of FEAList. FEAList is a packed array of variable length "full EA" structures, each containing an EA name and its corresponding value, as well as the lengths of the name and the value.

oError (ULONG) : Offset into structure where error has occurred.

On input, the fpGEAList field and oError fields are ignored. The EA setting operation is performed on the information contained in FEAList. If extended attributes are not to be defined or modified, then EABuf must be set to null. Following is the FEAList format:

cbList (ULONG) : Length of the FEA list, including the length itself.

list (FEA) : List of FEA structures. An FEA structure has the following format:

Flags (BYTE) : Bit indicator describing the characteristics of the EA being defined.

Bit                Description
7                Critical EA.
6-0                Reserved and must be set to zero. 

If bit 7 is set to 1, this indicates a critical EA. If bit 7 is 0, this means the EA is noncritical; that is, the EA is not essential to the intended use by an application of the file with which it is associated.

cbName (BYTE) : Length of EA ASCIIZ name, which does not include the null character.

cbValue (USHORT) : Length of EA value, which cannot exceed 64KB.

szName (PSZ) : Address of the ASCIIZ name of EA.

aValue (PSZ) : Address of the free-format value of EA.

Note: The szName and aValue fields are not included as part of header or include files. Because of their variable lengths, these entries must be built manually.

On output, fpGEAList is unchanged. fpFEAList is unchanged as is the area pointed to by fpFEAList. If an error occurred during the set, oError is the offset of the FEA where the error occurred. The API return code is the error code corresponding to the condition generating the error. If no error occurred, oError is undefined. If EABuf is 0x00000000, then no extended attributes are defined for the directory.

Reserved (ULONG) - input
Reserved and must be set to zero.

Return Code

rc (USHORT) - return

Return code descriptions are:

  • 0 NO_ERROR
  • 3 ERROR_PATH_NOT_FOUND
  • 5 ERROR_ACCESS_DENIED
  • 26 ERROR_NOT_DOS_DISK
  • 87 ERROR_INVALID_PARAMETER
  • 108 ERROR_DRIVE_LOCKED
  • 206 ERROR_FILENAME_EXCED_RANGE
  • 254 ERROR_INVALID_EA_NAME
  • 255 ERROR_EA_LIST_INCONSISTENT

Remarks

DosMkDir2 allows an application to define extended attributes for a subdirectory at the time of its creation.

If any subdirectory names in the path do not exist, the subdirectory is not created. Upon return, a subdirectory is created at the end of the specified path.

DosQSysInfo must be used by an application to determine the maximum path length supported by OS/2. The returned value should be used to dynamically allocate buffers that are to be used to store paths.

If a program running with the NEWFILES bit set tries to create a directory with blanks immediately preceding the dot on a FAT drive, the system rejects the name. For example, if c: is a FAT drive, the name "file .txt" is rejected and the name "file.txt" is accepted.

Example Code

C Binding

typedef struct _GEA {       /* gea */
 
  BYTE cbName;            /* name length not including NULL */
  CHAR szName[1];         /* attribute name */
 
} GEA;

typedef struct _GEALIST {   /* geal */
 
  ULONG  cbList;          /* total bytes of structure including full list */
  GEA list[1];            /* variable length GEA structures */
 
} GEALIST;

typedef struct _FEA {       /* fea */
 
  BYTE fEA;               /* flags */
  BYTE cbName;            /* name length not including NULL */
  USHORT cbValue;         /* value length */
 
} FEA;

typedef struct _FEALIST {   /* feal */
 
  ULONG  cbList;          /* total bytes of structure including full list */
  FEA list[1];            /* variable length FEA structures */
 
} FEALIST;

typedef struct _EAOP {      /* eaop */
 
  PGEALIST fpGEAList;     /* general EA list */
  PFEALIST fpFEAList;     /* full EA list */
  ULONG  oError;
 
} EAOP;

#define INCL_DOSFILEMGR

USHORT  rc = DosMkDir2(DirName, EABuf, Reserved);

PSZ              DirName;       /* New directory name string */
PEAOP            EABuf;         /* Extended attribute buffer */
ULONG            0;             /* Reserved (must be zero) */

USHORT           rc;            /* return code */

MASM Binding

GEA    struc
 
  gea_cbName      db  ?          ;name length not including NULL
  gea_szName      db  1 dup (?)  ;attribute name
 
GEA    ends

GEALIST    struc
 
  geal_cbList     dd  ?      ;total bytes of structure including full list
  geal_list       db  size GEA * 1 dup (?) ;variable length GEA structures
 
GEALIST    ends

FEA   struc
 
  fea_fEA         db  ? ;flags
  fea_cbName      db  ? ;name length not including NULL
  fea_cbValue     dw  ? ;value length
 
FEA   ends

FEALIST struc
 
  feal_cbList     dd  ?      ;total bytes of structure including full list
  feal_list       db  size FEA * 1 dup (?) ;variable length FEA structures
 
FEALIST ends

EAOP    struc
 
  eaop_fpGEAList  dd  ? ;general EA list
  eaop_fpFEAList  dd  ? ;full EA list
  eaop_oError     dd  ? ;
 
EAOP    ends

EXTRN  DosMkDir2:FAR
INCL_DOSFILEMGR     EQU 1

PUSH@  ASCIIZ  DirName       ;New directory name string
PUSH@  OTHER   EABuf         ;Extended attribute buffer
PUSH   DWORD   0             ;Reserved (must be zero)
CALL   DosMkDir2

Returns WORD

Related Functions