⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 aep.h

📁 PGP8.0源码 请认真阅读您的文件包然后写出其具体功能
💻 H
📖 第 1 页 / 共 2 页
字号:
** 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 + -