DosMkDir2: Difference between revisions
No edit summary |
mNo edit summary |
||
(2 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
This call creates a subdirectory that has extended attributes associated with it. | This call creates a subdirectory that has extended attributes associated with it. | ||
Line 9: | Line 5: | ||
==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. | ||
:[[DosQSysInfo]] is called by an application during initialization to determine the maximum path length allowed by OS/2. | |||
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. | ||
;Reserved (ULONG) - input: Reserved and must be set to zero. | |||
; EABuf (PEAOP) - input/output : Address of the extended attribute buffer, which contains an EAOP structure. | |||
; Reserved (ULONG) - input : Reserved and must be set to zero. | |||
==Return Code== | ==Return Code== | ||
;rc (USHORT) - return:Return code descriptions are: | |||
Return code descriptions are: | *0 NO_ERROR | ||
* 0 | *3 ERROR_PATH_NOT_FOUND | ||
* 3 | *5 ERROR_ACCESS_DENIED | ||
* 5 | *26 ERROR_NOT_DOS_DISK | ||
* 26 | *87 ERROR_INVALID_PARAMETER | ||
* 87 | *108 ERROR_DRIVE_LOCKED | ||
* 108 | *206 ERROR_FILENAME_EXCED_RANGE | ||
* 206 | *254 ERROR_INVALID_EA_NAME | ||
* 254 | *255 ERROR_EA_LIST_INCONSISTENT | ||
* 255 | |||
==Remarks== | ==Remarks== | ||
Line 69: | Line 29: | ||
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. | 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. | 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. | ||
== | ==Bindings== | ||
===C | ===C=== | ||
<PRE> | <PRE> | ||
typedef struct _GEA { /* gea */ | typedef struct _GEA { /* gea */ | ||
BYTE cbName; /* name length not including NULL */ | BYTE cbName; /* name length not including NULL */ | ||
CHAR szName[1]; /* attribute name */ | CHAR szName[1]; /* attribute name */ | ||
} GEA; | } GEA; | ||
typedef struct _GEALIST { /* geal */ | typedef struct _GEALIST { /* geal */ | ||
ULONG cbList; /* total bytes of structure including full list */ | ULONG cbList; /* total bytes of structure including full list */ | ||
GEA list[1]; /* variable length GEA structures */ | GEA list[1]; /* variable length GEA structures */ | ||
} GEALIST; | } GEALIST; | ||
typedef struct _FEA { /* fea */ | typedef struct _FEA { /* fea */ | ||
BYTE fEA; /* flags */ | BYTE fEA; /* flags */ | ||
BYTE cbName; /* name length not including NULL */ | BYTE cbName; /* name length not including NULL */ | ||
USHORT cbValue; /* value length */ | USHORT cbValue; /* value length */ | ||
} FEA; | } FEA; | ||
typedef struct _FEALIST { /* feal */ | typedef struct _FEALIST { /* feal */ | ||
ULONG cbList; /* total bytes of structure including full list */ | ULONG cbList; /* total bytes of structure including full list */ | ||
FEA list[1]; /* variable length FEA structures */ | FEA list[1]; /* variable length FEA structures */ | ||
} FEALIST; | } FEALIST; | ||
typedef struct _EAOP { /* eaop */ | typedef struct _EAOP { /* eaop */ | ||
PGEALIST fpGEAList; /* general EA list */ | PGEALIST fpGEAList; /* general EA list */ | ||
PFEALIST fpFEAList; /* full EA list */ | PFEALIST fpFEAList; /* full EA list */ | ||
ULONG oError; | ULONG oError; | ||
} EAOP; | } EAOP; | ||
Line 115: | Line 65: | ||
USHORT rc = DosMkDir2(DirName, EABuf, Reserved); | USHORT rc = DosMkDir2(DirName, EABuf, Reserved); | ||
PSZ | PSZ DirName; /* New directory name string */ | ||
PEAOP | PEAOP EABuf; /* Extended attribute buffer */ | ||
ULONG | ULONG 0; /* Reserved (must be zero) */ | ||
USHORT | USHORT rc; /* return code */ | ||
</PRE> | </PRE> | ||
===MASM | ===MASM=== | ||
<PRE> | <PRE> | ||
GEA struc | GEA struc | ||
gea_cbName db ? ;name length not including NULL | gea_cbName db ? ;name length not including NULL | ||
gea_szName db 1 dup (?) ;attribute name | gea_szName db 1 dup (?) ;attribute name | ||
GEA ends | GEA ends | ||
GEALIST struc | GEALIST struc | ||
geal_cbList dd ? ;total bytes of structure including full list | geal_cbList dd ? ;total bytes of structure including full list | ||
geal_list db size GEA * 1 dup (?) ;variable length GEA structures | geal_list db size GEA * 1 dup (?) ;variable length GEA structures | ||
GEALIST ends | GEALIST ends | ||
FEA struc | FEA struc | ||
fea_fEA db ? ;flags | fea_fEA db ? ;flags | ||
fea_cbName db ? ;name length not including NULL | fea_cbName db ? ;name length not including NULL | ||
fea_cbValue dw ? ;value length | fea_cbValue dw ? ;value length | ||
FEA ends | FEA ends | ||
FEALIST struc | FEALIST struc | ||
feal_cbList dd ? ;total bytes of structure including full list | feal_cbList dd ? ;total bytes of structure including full list | ||
feal_list db size FEA * 1 dup (?) ;variable length FEA structures | feal_list db size FEA * 1 dup (?) ;variable length FEA structures | ||
FEALIST ends | FEALIST ends | ||
EAOP struc | EAOP struc | ||
eaop_fpGEAList dd ? ;general EA list | eaop_fpGEAList dd ? ;general EA list | ||
eaop_fpFEAList dd ? ;full EA list | eaop_fpFEAList dd ? ;full EA list | ||
eaop_oError dd ? ; | eaop_oError dd ? ; | ||
EAOP ends | EAOP ends | ||
Line 171: | Line 111: | ||
Returns WORD | Returns WORD | ||
</PRE> | </PRE> | ||
[[Category: | [[Category:Dos16]] |
Latest revision as of 04:51, 26 January 2020
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.
- 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.
Bindings
C
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
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