DosMkDir2: Difference between revisions
Created page with "==Description== This call creates a subdirectory that has extended attributes associated with it. ==Syntax== <PRE> DosMkDir2 (DirName, EABuf, Reserved) </PRE> ==Paramet..." |
No edit summary |
||
Line 1: | Line 1: | ||
[[image:legacy.png]] | |||
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== | ==Description== | ||
This call creates a subdirectory that has extended attributes associated with it. | This call creates a subdirectory that has extended attributes associated with it. |
Revision as of 14:42, 29 August 2016
This function has been renamed to "DosCreateDir". [1]
Description
This call creates a subdirectory that has extended attributes associated with it.
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