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

📄 test.h

📁 将exe等可执行文件转化成c程序的反编译程序,先到汇编再到c
💻 H
📖 第 1 页 / 共 2 页
字号:
typedef struct  _DCB_disk { /* */

        DCB     DCB_filler_1;           /* standard dcb header              */

        USHORT  DCB_write_precomp;      /* Write Precompensation            */

   ULONG   DCB_disk_tsd_private;   /* private area for tsd.  used to  */
                                                                                                         /* store b: BDS ptr for single flp */
} DCB_disk, *pDCB_disk;

//
// To support Japanese 3mode floppy driver this is defined to add an extra
// field to the end of DCB_disk.
//
//

typedef struct  _DCB_floppy { /* */

        DCB_disk  DCB_filler_3;         /* standard dcb header */

        USHORT  DCB_3mode_Flags;        /* 3mode floppy flag */

} DCB_floppy, *pDCB_floppy;

#define DCB_IS_3MODE_DRIVE      0x0001  /* floppy drive supports 3mode access */
#define DCB_SET_RPM_ON_ACCESS   0x0002  /* set spindle speed on every access */

/*
** DCB_disk_geometry structure access into either the actual or apparent
** DCB geometry fields
*/

typedef struct _DCB_disk_geometry { /* */
        ULONG   sector_cnt[2];/* number of sectors */
        ULONG   blk_size;       /* actual block size of the device  */
                                        /* as seen below the tsd.           */
        ULONG   head_cnt;       /* number of heads as seen below    */
                                        /* the tsd.                         */
        ULONG   cyl_cnt;        /* number of cylinders as seen      */
                                        /* below the tsd.                   */
        ULONG   spt;            /* number of sectors per track as   */
                                        /* seen below the tsd.              */
} DCB_disk_geometry, *pDCB_disk_geometry;

/* ASM

.errnz DCB_apparent_sector_cnt - DCB_apparent_sector_cnt[0] - sector_cnt[0]
.errnz DCB_apparent_blk_size - DCB_apparent_sector_cnt[0] - blk_size
.errnz DCB_apparent_head_cnt - DCB_apparent_sector_cnt[0] - head_cnt
.errnz DCB_apparent_cyl_cnt - DCB_apparent_sector_cnt[0] - cyl_cnt
.errnz DCB_apparent_spt - DCB_apparent_sector_cnt[0] - spt

.errnz DCB_actual_sector_cnt - DCB_actual_sector_cnt[0] - sector_cnt[0]
.errnz DCB_actual_blk_size - DCB_actual_sector_cnt[0] - blk_size
.errnz DCB_actual_head_cnt - DCB_actual_sector_cnt[0] - head_cnt
.errnz DCB_actual_cyl_cnt - DCB_actual_sector_cnt[0] - cyl_cnt
.errnz DCB_actual_spt - DCB_actual_sector_cnt[0] - spt

*/

/*
** DCB_disk_bpb_flags definitions follow
*/

#define DCBF_DISK_BPB_USEFAKE   0x00000001

/*
** maximum size of a Table of Contents for a CDROM
*/

#define CDROM_MAX_TOC 804

/*
** maximum size of a mode sense buffer for CDROM
*/
#define CDROM_MAX_MODE_BUF 20

typedef struct  _DCB_cdrom { /* */

        DCB     DCB_filler_2;           /* standard dcb header                */

        ULONG   DCB_cdrom_Partition_Start;    /* partition start sector      */
        ULONG   DCB_cdrom_Partition_End;      /* partition end sector         */
    UCHAR       DCB_cd_ls_ft;           /* first track number in the last sess*/

        ULONG   DCB_TOC[202];	//[CDROM_MAX_TOC / 4 + 1]; /* cdrom toc buffer           */

/* ASM
        .errnz  (DCB_TOC / 4) * 4 - DCB_TOC
*/

        ULONG   DCB_cd_mode_sense_buf[6];	//[CDROM_MAX_MODE_BUF /4 + 1]; /* cdrom mode */

    UCHAR   DCB_cd_first_session;       /* index number of first session      */
        UCHAR   DCB_cd_last_session;    /* index of last session on disc      */

        ULONG   DCB_play_resume_start;  /* re-start address when paused(LBA)  */
        ULONG   DCB_play_resume_stop;   /* end of re-started play (LBA)       */
        ULONG   DCB_play_status;        /* last command play status           */
        ULONG   DCB_cd_device_flags;    /* flags indicating the audio support
                                          capabilities of the device          */

        UCHAR   DCB_cd_fs_lt;           /* last track in the first session    */
        UCHAR DCB_cd_bobbit_pt; /* indicates the track where a CDPLUS disc is */
                                                                   /* chopped off to prevent data tracks from showing */
                                                                        /* up in the table of contents                              */

        ULONG   DCB_cd_fs_lo;           /* lead out address of first session  */
        ULONG   DCB_cd_last_session_start  ; /* LBA start address of data area in
                                  the last session on a multi-session disc    */

   ULONG   DCB_cd_current_block_size;  /* current block size selected by the
                                                   mode command               */

        UCHAR   DCB_cd_vol_map[8];              /* current volume / channel mapping */
        ULONG   DCB_cd_current_command; /* current command                    */

        ULONG   DCB_cd_queue_head;      /* head of current command queue      */

    UCHAR   DCB_cd_grp1_time[2];    /* group 1 command timeouts        */
    UCHAR   DCB_cd_grp2_time[2];    /* group 2 command timeouts        */

	ULONG	DCB_cd_dvd_copy_flags;  /* dvd copy protection bytes */

} DCB_cdrom, *PDCB_cdrom;

typedef struct type_sdeffsd_req_usage { /* */
   USHORT _IOR_ioctl_drive;
   USHORT _IOR_ioctl_function ;
   ULONG _IOR_ioctl_control_param ;
   ULONG _IOR_ioctl_buffer_ptr;
   ULONG _IOR_ioctl_client_params;
   ULONG _IOR_ioctl_return;
} _type_sdeffsd_req_usage;

typedef union urequestor_usage { /* */
   ULONG  _IOR_requestor_usage[5];

   type_sdeffsd_req_usage sdeffsd_req_usage;
} _urequestor_usage;

typedef  void (* CMDCPLT)(void);

typedef struct _IOR { /* */

      ULONG    IOR_next;	     		/* client link for BCB's 					*/
												/* (MBZ for IORF_VERSION_002) 			*/

      USHORT   IOR_func;	    		/* function to be performed - see   	*/
				       						/* defines below.		   					*/

      USHORT   IOR_status;				/* request status - see defines	   	*/
				       						/* below.			   						*/
      ULONG    IOR_flags;	     		/* request control flags - see	   	*/
				       						/* defines below.		   					*/
      CMDCPLT  IOR_callback;	  		/* address to call request back to if 	*/
												/* IORF_SYNC_COMMAND is not set. 		*/

      ULONG    IOR_start_addr[2];	/* volume relative starting addr 		*/
												/* if IORF_LOGICAL_START_SECTOR is set.*/
												/* physical if not set.						*/

      ULONG    IOR_xfer_count;		/* number of sectors to process if 		*/
												/* IORF_CHAR_COMMAND is not set, or # 	*/
												/* of bytes if it is set.             	*/
												/* MUST be set to zero if no data xfer */

      ULONG    IOR_buffer_ptr;		/* BlockDev client buffer pointer. 		*/
												/* Contains pointer to data buffer 		*/
												/* or to null terminated list of sgd's */
												/* depending on IORF_SCATTER_GATHER 	*/
												/* Undefined if no data transfer     	*/

      ULONG    IOR_private_client;	/* BlockDev/IOS client reserved	  		*/

      ULONG    IOR_private_IOS;    	/* reserved space for IOS	   			*/

      ULONG    IOR_private_port;		/* private area for port driver			*/

      union    urequestor_usage _ureq;
												/* requestor usage area, also used for	*/
												/* IOCTL's										*/

      ULONG    IOR_req_req_handle;	/* requestor provided request	   		*/
				       						/* handle. often is a pointer to    	*/
				       						/* to this ior or its containing    	*/
				       						/* iop. pushed on the stack by IOS   	*/
				       						/* before IOR_callback is called			*/

      ULONG    IOR_req_vol_handle; 	/* requestor provided media handle  	*/
				       						/* designating the media to perform 	*/
				       						/* the function on (VRP).					*/

      ULONG    IOR_sgd_lin_phys; 	/* pointer to first physical sgd, as   */
												/*	contrasted with IOR_buffer_ptr,		*/
												/*	which points to the logical sgds.	*/
				       						/* this is either a linear or phys  	*/
				       						/* address, depending on the needs  	*/
				       						/* of the drivers, as indicated	   	*/
				       						/* via the DCB demand bits.		   	*/

      UCHAR    IOR_num_sgds;	    	/* number of phys sgd's pointed to by  */
												/* IOR_sgd_lin_phys							*/
      UCHAR    IOR_vol_designtr; 	/* numeric representation of the    	*/
				       						/* drive letter designating the	   	*/
				       						/* volume to perform the function   	*/
				       						/* on (c: = 2).				   			*/

      USHORT   IOR_ios_private_1;	/* reserved by IOS to force alignment 	*/

      ULONG    IOR_reserved_2[2];  	/* reserved for internal use 				*/

} IOR, *PIOR;

struct IOP_callback_entry { /* */

	ULONG	IOP_CB_address; 	/* call back address		        */
	ULONG	IOP_CB_ref_data;	/* pointer to callback ref data */

} ;

#define IOP_CALLBACK_TABLE_DEPTH 6
/*
** i/o request packet - offset 0
*/
typedef struct _IOP { /* */

	ULONG	IOP_physical;		/* physical address of IOP.	    */
	ULONG	IOP_physical_dcb;	/* pointer to physical dcb.	    */
	ULONG	IOP_original_dcb;	/* ptr to dcb designated by ior.    */
/*
** offset 20 (hex)
*/
	USHORT	IOP_timer;		/* rcb current timeout value.	    */
	USHORT	IOP_timer_orig;		/* rcb original timeout value.	    */

	ULONG	IOP_calldown_ptr;	/* ptr to next calldown routine.    */
	ULONG	IOP_callback_ptr;	/* ptr to current callback address. */
/*
** offset 30 (hex)
*/
	ULONG	IOP_voltrk_private; /* for use by volume tracking.  BUGBUG BGP- I */
									  /* only need one byte of this, but to maintain */
                             /* alignment it's a dword.							*/


	ULONG	IOP_Thread_Handle;	/* contains the handle of the thread in whose*/
										/* context this IO originated. This is inited*/
										/* in IOS_SendCommand.								*/

	ULONG	IOP_srb;				   /* used by SCSI'izers to pass SRB pointer to */
										/* next layer											*/

	ULONG	IOP_reserved[2];		/* reserved for future use - must be zero */

/*
** offset 44 (hex)
*/
	IOP_callback_entry IOP_callback_table[6];//IOP_CALLBACK_TABLE_DEPTH];	       // RCB_CallBackTable
/*
** offset 74 (hex)
*/

	 BYTE   IOP_format_head;	/* fields for low level format */
	 BYTE   IOP_format_xfer_rate;	
	 USHORT IOP_format_track;
	 ULONG  IOP_format_num_sectors;

	IOR	IOP_ior;			/* i/o request descriptor	    */

} IOP, *pIOP;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -