Microsoft KB Archive/36392

From BetaArchive Wiki
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.
Knowledge Base


How to Use HFSDispatch to Create a Macintosh Folder

Article ID: 36392

Article Last Modified on 11/21/2006

This article was previously published under Q36392

SUMMARY

This article contains a sample program that demonstrates how to use HFSDispatch to create a folder with Microsoft QuickBASIC version 1.00 for the Apple Macintosh.

MORE INFORMATION

The program below will create a new folder. If no volume or path is specified, the folder is placed in the current folder on the current volume. If a path is specified, it must be a full pathname, including volume name and parent folder names. The last folder name in the path specification is the one that will be created; all others in the path must already exist.

If there is an error creating the folder, the error code will be returned in the variable ErrCode%. The error codes are as follows:

0       No error, folder was created

1       Volume specified is not currently mounted

Other   Error in creating the folder. This is the error code returned
        by the PBDirCreate ROM routine. See "Inside Macintosh," Volume
        4 for more information about these error codes.
                

This program creates the folder by properly establishing a parameter block (stored here in IOPB%()), and making a call to HFSDispatch, call number 6. For more information regarding the I/O Parameter Block (IOPB), see "Inside Macintosh", Volume 4.

The following is a code example:

'--------------------------------------------------------
'    DirCreate
'    Copyright 1988 Microsoft Corp.
'
'    This program is for personal use only.  It may not be
'    redistributed in any form, electronic or mechanical, for any
'    purpose, without the written permission of Microsoft Corp.
'
'--------------------------------------------------------
'
'    Subprogram which will create the specified folder name on
'    either the current volume (in the current folder) or on the
'    specified volume (in the specified folder).
'
'--------------------------------------------------------

INPUT "Please enter the folder to create:",fld$
DirCreate fld$, ECode%
WHILE MOUSE(0)<>1:WEND
END

SUB DirCreate (FolderName$, ErrCode%) STATIC
    DIM IOPB%(120)
    IF INSTR(FolderName$,":") = 0 THEN
        '    Set up for current volume/folder
        Ptr& = &H352        'pointer to default VCB
        Vol& = PEEKL(Ptr&)    'Default VCB
        vRefNum% = PEEKW(Vol& + 78)    'Volume reference number
        path$ = ""
        GetDirName vRefNum%, path$
        NewFolder$ = path$ + ":"+FolderName$
    ELSE    'Entire volume:path specified
        Vol$ = LEFT$(FolderName$, INSTR(FolderName$,":")-1)
        Ptr& = &H358    'first VCB
        Vol& = PEEKL(Ptr&)
        Found% = 0
        WHILE Vol& <> 0 AND Found% = 0
            Vol& = PEEKL(Ptr&)
            Ptr& = Vol&
            IF Vol& <> 0 THEN
                DirID& = 0 : n$ = ""
                vRefNum% = PEEKW(Vol& + 78)
                GetCatInfo IOPB%(0),n$,DirID&, vRefNum%
                IF UCASE$(n$) = UCASE$(Vol$) THEN Found% = 1
            END IF
        WEND
        IF Found% = 0 THEN
            PRINT "Volume not mounted!"
            ErrCode% = 1
            EXIT SUB
        END IF
        NewFolder$ = FolderName$
    END IF
    pasFolder$ = ""
    B2PStr NewFolder$, pasFolder$
    POKEW VARPTR(IOPB%(0))+22, vRefNum%
    POKEL VARPTR(IOPB%(0))+18, SADD(pasFolder$)
    HFSDispatch 6,IOPB%(0)
    ErrCode% = PEEKW(VARPTR(IOPB%(0))+16)
END SUB
                


Additional query words: MQuickB

Keywords: KB36392