📄 aep.h
字号:
** the flags AEP_NUM_1_PRES and AEP_NUM_2_PRES flags would be set,
** AEP_d_c_num_1 member would contain hexadecimal 1, and AEP_d_c_num_2 would
** contain hexadecimal 46.
**
*/
typedef struct AEP_dot_command { /* */
struct AEPHDR AEP_i_t_o_hdr; /* Standard Header */
UCHAR AEP_d_c_flags; /* AEP flags */
PVOID AEP_d_c_pkeyword; /* pointer to keyword string */
UCHAR AEP_d_c_key_len; /* length of keyword (max 32) */
ULONG AEP_d_c_num_1; /* first numeric parameter */
ULONG AEP_d_c_num_2; /* second numeric parameter */
ULONG AEP_d_c_num_3; /* third numeric parameter */
} AEP_dot_command, *PAEP_dot_command;
/* AEP_dot_command flags */
#define AEP_D_C_NUM_1_PRES 0x01 /* numeric parameter 1 is present */
#define AEP_D_C_NUM_2_PRES 0x02 /* numeric parameter 2 is present */
#define AEP_D_C_NUM_3_PRES 0x04 /* numeric parameter 3 is present */
#define MAX_DOT_CMD_KEYWORD_SIZE 16 /* max number of chars in .I keyword */
/*
** AEP_SYSTEM_SHUTDOWN definition:
**
** This broadcast is made to the layer drivers at System_Exit time.
*/
typedef struct AEP_sys_shutdown { /* */
struct AEPHDR AEP_s_s_hdr; /* AEP_SYSTEM_SHUTDOWN */
} AEP_sys_shutdown, *PAEP_sys_shutdown;
/*
** AEP_SYSTEM_CRIT_SHUTDOWN definition:
**
** This broadcast is made to the layer drivers at Sys_Critical_Exit time.
*/
typedef struct AEP_sys_crit_shutdown { /* */
struct AEPHDR AEP_s_c_s_hdr; /* AEP_SYSTEM_CRIT_SHUTDOWN */
} AEP_sys_crit_shutdown, *PAEP_sys_crit_shutdown;
/*
** AEP_ASSOCIATE_DCB definition:
**
** This issued by IOS from an ISP_ASSOCIATE_DCB sercice. Refer to ISP.H
** for a description. Essentially a layer driver can specify additional
** logical volumes that are associated with a particulr physical drive that
** the TSD cannot deduce for itself. Note that these logical volumes need
** to be present in real mode as well.
**
** BUGBUG: This was originally intended for use by the compression driver.
** This is no longer the case. The compression driver uses the
** ISP_ASSOCIATE_DCB for this purpose. This service may be removed for M7.
**
*/
typedef struct AEP_assoc_dcb {
struct AEPHDR AEP_a_d_hdr; /* AEP_ASSOCIATE_DCB */
PVOID AEP_a_d_pdcb; /* Pointer to physical DCB */
ULONG AEP_a_d_drives; /* Bitmap of associated logical drives */
} AEP_assoc_dcb, *PAEP_assoc_dcb;
/*
** AEP_REAL_MODE_HANDOFF definition:
**
** This is linked to the IRS_rm_handoff command. Refer to irs.h. This IRS
** is made by the IFSMGR just before it hooks out the int 21 vector. IOS in
** turn informs the layer drivers of this by making this AEP broadcast. This
** indicates to the drivers that this is the last chance they have to do
** int 21s through DOS.
*/
typedef struct AEP_rm_handoff {
struct AEPHDR AEP_r_m_h_hdr; /* AEP_REAL_MODE_HANDOFF */
} AEP_rm_handoff, *PAEP_rm_handoff;
/*
** AEP_DCB_LOCK definition:
**
** This call is linked to the IRS_QUERY_VOLUME_LOCK service. Refer to irs.h.
** This IRS call is made by the IFSMGR when an exclusive volume lock is
** about to be serviced. IOS in turn queries all layer drivers to determine
** whether there are any volumes that are associated with the volume that
** is going to be locked. For instance if a compression driver recieves this
** AEP informing it that one of its host volumes is going to be locked, it
** needs to indicate all the compressed volumes associated with that host
** in the AEP_d_l_drives bitmap. This ensures that the IFSMGR will lock all
** the compressed volumes as well.
**
** Also the layer drivers should stop doing caching or any thing else that
** that should not be done on a volume when a lock is in place. Please refer
** to the exclusive lock specification for more details. Note that the
** layer drivers will be informed about a exclusive volume lock release via
** the AEP_drive_refresh call.
**
*/
typedef struct AEP_lock_dcb {
struct AEPHDR AEP_d_l_hdr; /* AEP_DCB_LOCK */
PVOID AEP_d_l_pdcb; /* Pointer to logical DCB */
ULONG AEP_d_l_drives; /* Bitmap of logical drives */
UCHAR AEP_d_l_designtr;
UCHAR AEP_d_l_align[3]; /* pad to dword boundary */
} AEP_lock_dcb, *PAEP_lock_dcb;
/*
** AEP_MOUNT_NOTIFY definitions
**
** This call is made when the IFS Manager has successfully mounted a
** new volume, but before the operation which caused the mount has
** been completed.
**
** This call is made to allow a driver which creates child volumes from
** special files on the volume (e.g., a DBLSPACE driver which causes
** CVFs to appear as volumes) to find such files and prepare them
** for mounting. Conceivably, it could be used by other drivers
** who want to know when a new volume is mounted for other purposes.
**
** The callee's response can have the following effects:
**
** - The original volume can be associated with a different drive,
** e.g., the original volume could be moved from drive A: to
** drive H:. If such a move is made and the target drive is
** already in use, IFSMGR will attempt to unmount the current
** volume for that drive. Note that either or both the original
** volume's effective and actual drives may be changed. E.g.,
** drive G: is the host for DBLSPACE drive E:, E: and G: are
** swapped (meaning if there were no compressed drive E:, G:
** would be known as E:), and G: is also host for another
** compressed drive H:. E:, G:, and H: are all visible in
** real mode. The user's first access may touch any of these
** drives first. Whichever drive letter is used first, G: will
** be the first drive mounted. Thus, the Compressed Volume
** Manager will respond that the drive's effective name is really
** G: and its actual name is really E:.
**
** - A bitmap of child volumes to mount can be returned. The low-
** order bit corresponds to drive A: and so forth. For each
** bit in the bitmap, the IFSMGR will send a mount child volume
** command to the same FSD that mounted the original volume.
** The child volumes and their parent (the original volume) share
** the same VRP; this is the mechanism by which the relationship
** among the volumes is maintained.
**
** If the returned bitmap is zero, then the IFSMGR takes no additional
** action regardless of any change in the drive number. Thus, the
** valid responses are to do nothing, or to cause one or more child
** volumes to be mounted, optionally moving the parent to a new
** drive while reusing the original drive for one of the child
** volumes.
*/
typedef struct AEP_mnt_notify {
struct AEPHDR AEP_m_n_hdr;/* AEP_MOUNT_NOTIFY */
PVOID AEP_m_n_pvrp; /* VRP of drive */
ULONG AEP_m_n_drivemap; /* Bitmap of "child" volumes */
ULONG AEP_m_n_drive; /* Drive number of drive just mounted */
ULONG AEP_m_n_effective_drive; /* Effective drive number */
ULONG AEP_m_n_actual_drive; /* Actual drive number */
} AEP_mnt_notify, *PAEP_mnt_notify;
#define AEP_M_N_SUCCESS AEP_SUCCESS /* Call succeeded */
/*
** AEP_CREATE_VRP/AEP_DESTROY_VRP definitions
**
** AEP_CREATE_VRP
**
** Call is made when a VRP "goes into service", i.e., when it is
** determinded by the IFSMGR that a VRP describes a newly mounted volume.
** VRPs are actually created any time a mount is attempted, but this
** message is not sent if the mount fails for any reason (among which
** is ERROR_VOLUME_EXISTS, a successful remount of a volume).
** The mounted volume must be a parent volume; this call is not
** issued when child volumes are successfully mounted.
**
** This call is made for symmetry with AEP_DESTROY_VRP. There are
** no known users of this call.
**
** This call is informational. The callee's response is ignored.
**
** AEP_DESTROY_VRP
**
** Call is made when a VRP "goes out of service", i.e., when it is
** determinded by the IFSMGR that the volume and any child volumes
** associated with the volume have been fully unmounted by the FSD
** that mounted them.
**
** This call is used, for example, by the DBLSPACE VxD to determine
** when it can dispose of its data structures for a particular set
** of child volumes.
**
** This call is informational. The callee's response is ignored.
**
*/
typedef struct AEP_vrp_create_destroy {
struct AEPHDR AEP_v_cd_hdr; /* AEP_CREATE_VRP/AEP_DESTROY_VRP */
PVOID AEP_v_cd_pvrp; /* VRP pointer */
ULONG AEP_v_cd_drive; /* Drive number */
} AEP_vrp_create_destroy, *PAEP_vrp_create_destroy;
/*
** AEP_REFRESH_DRIVE definitions:
**
** This call is made by IOS to inform the layer drivers that an exclusive
** lock on the volume specified in AEP_d_r_drive is being released. Note
** that at this point all on disk file system related data structures could
** have been moved. Please refer to the exclusive vol lock spec for more
** details.
**
*/
typedef struct AEP_drive_refresh {
struct AEPHDR AEP_d_r_hdr; /* AEP_REFRESH_DRIVE */
ULONG AEP_d_r_drive; /* Drive number */
} AEP_drive_refresh, *PAEP_drive_refresh;
/*
** AEP_UPDATE_1e_VEC definitions:
**
** This call is made by IOS to inform the int13 vxd that the vector associated
** with the diskette parameter table has been updated by IO.SYS, and int13
** should use the current value as the base vector to compare for copy proctection
**
*/
typedef struct AEP_update_1e_vec {
struct AEPHDR AEP_u_1e_hdr; /* AEP_REFRESH_DRIVE */
} AEP_update_1e_vec, *PAEP_update_1e_vec;
/*
** AEP_CHANGE_RPM definitions:
**
** This call is made by IOS to inform the 3mode floppy driver vsd to
** change the floppy spindle speed to 360 or 300 rpm.
**
*/
typedef struct AEP_rpm_change {
struct AEPHDR AEP_rc_hdr; /* AEP_CHANGE_RPM */
USHORT AEP_rc_speed; /* target floppy spindle speed */
} AEP_rpm_change, *PAEP_rpm_change;
#define AEP_RC_360_RPM 0x0001 /* Set floppy spindle to 360 rpm */
#define AEP_RC_300_RPM 0x0002 /* Set floppy spindle to 300 rpm */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -