[Windows 95 only.]
Implements a sub-function to perform DPB operations.
There are five sub-functions that can be implemented. The buffer at ES:DI must contain a SDPDFormatStruc (FAT32) structure. The value in the DWORD field, SetDPB_Function, determines which sub-function is called.
mov dx, seg Buffer
mov es, dx
mov di, offset Buffer ;See below
mov es:[di].SDPDFormatStruc.SetDPB_Level, ExpectLevel ;See below
mov ax, word ptr Value1 ; initialize SDPDFormatStruc values.
; See specific sub-function for details.
mov word ptr es:[di].SDPDFormatStruc.SetDPB_Value1, ax
mov ax, word ptr Value1 + 2
mov word ptr es:[di].SDPDFormatStruc.SetDPB_Value1+2, ax
mov ax, word ptr SubFunction
mov word ptr es:[di].SDPDFormatStruc.SetDPB_Function, ax
mov word ptr es:[di].SDPDFormatStruc.SetDPB_Function+2, 0
mov dl, DriveNum ;See below
mov cx, BufferSize ;See below
mov ax, 7304h ;Set_DPBForFormat
int 21h
Selecting a Sub-Function:
The value in the SetDPB_Function field of the SDPDFormatStruc structure determines which sub-function is implemented.
0 | SetDPB_SetAllocInfo |
1 | SetDPB_SetDPBFrmBPB |
2 | SetDPB_ForceMediaChng |
3 | SetDPB_GetSetActFATandMirr |
4 | SetDPB_GetSetRootDirClus |
It is important to be aware of the state of the file system when using this call. If sectors of the drive are cached, or if there are files open, the function may produce unexpected results. To avoid this, ensure that the application closes all files and calls DiskReset to flush and invalidate any caches.
The SDPDFormatStruc also contains four ULONG fields: SetDPB_Value1, SetDPB_Value2, SetDPB_Value3, and SetDPB_Value4. Set these appropriately according to the requirements for each of the sub-functions.
When calling this function with DeviceIoControl, set the dwloControlCode parameter to VWIN32_DIOC_DOS_IOCTL (defined as 6 in VWIN32.H). For more information on this, see Using VWIN32 to Carry Out MS-DOS Functions.