{{page>en:templates:fapiint}} ====== DosMkDir2 ====== 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 *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 {{page>en:templates:fapi}}