Platform SDK: Win32 API |
Retrieves the first cluster of the specified file or directory.
mov ax, 440Dh ; generic IOCTL mov bx, CharSet ; see below mov ch, 08h ; device category mov cl, 71h ; Get First Cluster mov dx, seg PathName ; see below mov ds, dx mov dx, offset PathName int 21h jc error
Value | Meaning |
---|---|
BCS_WANSI (0) | Windows ANSI character set |
BCS_OEM (1) | Current OEM character set |
BCS_UNICODE (2) | Unicode character set |
Clears the carry flag and sets DX:AX to the first cluster number if successful. Otherwise, the function sets the carry flag and returns either the ERROR_INVALID_FUNCTION or ERROR_ACCESS_DENIED value in AX.
The first cluster of a file is the first cluster of the FAT cluster chain describing the data associated with the file. The first cluster of a directory is the first cluster of the FAT cluster chain associated with the directory. It is the cluster that contains the "." and ".." entries. The function finds any file or directory regardless of attribute (system, hidden, or read-only). It does not find volume labels.
If your application is unable to accommodate a 32-bit cluster number, you must check to see if the value returned in the DX register is greater than zero.
if(MAKELONG(regAX,regDX) > 0x0000FFF8) b32BitNum = TRUE; else b32BitNum = FALSE;
It is the calling application's responsibility to check to see if the returned cluster number is valid.
if((MAKELONG(regAX,regDX) < 2L) || (MAKELONG(regAX,regDX) > maxClus)) bInvalidNum = TRUE; else bInvalidNum = FALSE;
In the preceding example, the maxClus variable is the maximum legal cluster number, as a DWORD type, computed from the drive parameters.