Changeset 6030 in vbox for trunk/include
- Timestamp:
- Dec 9, 2007 9:51:54 PM (17 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/include/VBox/VBoxGuest.h
r6020 r6030 114 114 * additions_major == vmmdev_current && additions_minor <= vmmdev_current. 115 115 * Additions version is reported to host (VMMDev) by VMMDevReq_ReportGuestInfo. 116 * 116 * 117 117 * @remark These defines also live in the 16-bit and assembly versions of this header. 118 118 */ … … 476 476 uint32_t eventAck; 477 477 } VMMDevGetStatisticsChangeRequest; 478 478 479 479 /** display change request structure */ 480 480 typedef struct … … 895 895 /** 896 896 * VBoxGuest IOCTL codes and structures. 897 * 897 * 898 898 * The range 0..15 is for basic driver communication. 899 899 * The range 16..31 is for HGCM communcation. … … 901 901 * The range 48..63 is for OS specific communcation. 902 902 * The 7th bit is reserved for future hacks. 903 * The 8th bit is reserved for distinguishing between 32-bit and 64-bit 904 * processes in future 64-bit guest additions. 905 * 906 * While windows IOCTL function number has to start at 2048 and stop at 4096 there 907 * never was any need to do this for everyone. A simple ((Function) | 0x800) would 908 * have sufficed. On Linux we're now intruding upon the type field. Fortunately 909 * this hasn't caused any trouble because the FILE_DEVICE_UNKNOWN value was set 910 * to 0x22 (if it were 0x2C it would not have worked soo smoothly). The situation 911 * would've been the same for *BSD and Darwin since they seems to share common 903 * The 8th bit is reserved for distinguishing between 32-bit and 64-bit 904 * processes in future 64-bit guest additions. 905 * 906 * While windows IOCTL function number has to start at 2048 and stop at 4096 there 907 * never was any need to do this for everyone. A simple ((Function) | 0x800) would 908 * have sufficed. On Linux we're now intruding upon the type field. Fortunately 909 * this hasn't caused any trouble because the FILE_DEVICE_UNKNOWN value was set 910 * to 0x22 (if it were 0x2C it would not have worked soo smoothly). The situation 911 * would've been the same for *BSD and Darwin since they seems to share common 912 912 * _IOC() heritage. 913 * 914 * However, on good old OS/2 we only have 8-bit handy for the function number. The 913 * 914 * However, on good old OS/2 we only have 8-bit handy for the function number. The 915 915 * result from using the old IOCTL function numbers her would've been overlapping 916 * between the two ranges. 917 * 918 * To fix this problem and get rid of all the unnecessary windowsy crap that I 919 * bet was copied from my SUPDRVIOC.h once upon a time (although the concept of 920 * prefixing macros with the purpose of avoid clashes with system stuff and 921 * to indicate exactly how owns them seems to have been lost somewhere along 916 * between the two ranges. 917 * 918 * To fix this problem and get rid of all the unnecessary windowsy crap that I 919 * bet was copied from my SUPDRVIOC.h once upon a time (although the concept of 920 * prefixing macros with the purpose of avoid clashes with system stuff and 921 * to indicate exactly how owns them seems to have been lost somewhere along 922 922 * the way), I've introduced a VBOXGUEST_IOCTL_CODE for defining generic IN/OUT 923 923 * IOCtls on new ports of the additions. … … 925 925 * @remarks When creating new IOCtl interfaces keep in mind that not all OSes supports 926 926 * reporting back the output size. (This got messed up a little bit in VBoxDrv.) 927 * 927 * 928 928 * The request size is also a little bit tricky as it's passed as part of the 929 929 * request code on unix. The size field is 14 bits on Linux, 12 bits on *BSD, 930 * 13 bits Darwin, and 8-bits on Solaris. All the BSDs and Darwin kernels 930 * 13 bits Darwin, and 8-bits on Solaris. All the BSDs and Darwin kernels 931 931 * will make use of the size field, while Linux and Solaris will not. We're of 932 * course using the size to validate and/or map/lock the request, so it has 932 * course using the size to validate and/or map/lock the request, so it has 933 933 * to be valid. 934 * 935 * For Solaris we will have to do something special though, 255 isn't 936 * sufficent for all we need. A 4KB restriction (BSD) is probably not 934 * 935 * For Solaris we will have to do something special though, 255 isn't 936 * sufficent for all we need. A 4KB restriction (BSD) is probably not 937 937 * too problematic (yet) as a general one. 938 * 938 * 939 939 * More info can be found in SUPDRVIOC.h and related sources. 940 940 * … … 990 990 #else 991 991 # define IOCTL_VBOXGUEST_GETVMMDEVPORT IOCTL_CODE(FILE_DEVICE_UNKNOWN, 2048, METHOD_BUFFERED, FILE_WRITE_ACCESS, sizeof(VBoxGuestPortInfo)) 992 #endif 992 #endif 993 993 994 994 #pragma pack(4) … … 1012 1012 IOCTL_CODE(FILE_DEVICE_UNKNOWN, 2051, METHOD_BUFFERED, \ 1013 1013 FILE_WRITE_ACCESS, 0) 1014 #endif 1014 #endif 1015 1015 1016 1016 /** … … 1049 1049 #else 1050 1050 # define IOCTL_VBOXGUEST_VMMREQUEST IOCTL_CODE(FILE_DEVICE_UNKNOWN, 2050, METHOD_BUFFERED, FILE_WRITE_ACCESS, sizeof(VMMDevRequestHeader)) 1051 #endif 1051 #endif 1052 1052 1053 1053 /** Input and output buffer layout of the IOCTL_VBOXGUEST_CTL_FILTER_MASK. */ … … 1065 1065 #else 1066 1066 # define IOCTL_VBOXGUEST_CTL_FILTER_MASK IOCTL_CODE(FILE_DEVICE_UNKNOWN, 2051, METHOD_BUFFERED, FILE_WRITE_ACCESS, sizeof (VBoxGuestFilterMaskInfo)) 1067 #endif 1067 #endif 1068 1068 1069 1069 /** IOCTL to VBoxGuest to check memory ballooning */ … … 1073 1073 #else 1074 1074 # define IOCTL_VBOXGUEST_CTL_CHECK_BALLOON IOCTL_CODE(FILE_DEVICE_UNKNOWN, 2052, METHOD_BUFFERED, FILE_WRITE_ACCESS, 0) 1075 #endif 1075 #endif 1076 1076 1077 1077 #ifdef VBOX_HGCM … … 1117 1117 # define IOCTL_VBOXGUEST_HGCM_CALL IOCTL_CODE(FILE_DEVICE_UNKNOWN, 3074, METHOD_BUFFERED, FILE_WRITE_ACCESS, sizeof(VBoxGuestHGCMCallInfo)) 1118 1118 # define IOCTL_VBOXGUEST_CLIPBOARD_CONNECT IOCTL_CODE(FILE_DEVICE_UNKNOWN, 3075, METHOD_BUFFERED, FILE_WRITE_ACCESS, sizeof(uint32_t)) 1119 #endif 1119 #endif 1120 1120 1121 1121 #define VBOXGUEST_HGCM_CALL_PARMS(a) ((HGCMFunctionParameter *)((uint8_t *)(a) + sizeof (VBoxGuestHGCMCallInfo))) … … 1262 1262 #ifdef RT_OS_OS2 1263 1263 1264 /** 1264 /** 1265 1265 * The data buffer layout for the IDC entry point (AttachDD). 1266 * 1267 * @remark This is defined in multiple 16-bit headers / sources. 1266 * 1267 * @remark This is defined in multiple 16-bit headers / sources. 1268 1268 * Some places it's called VBGOS2IDC to short things a bit. 1269 1269 */ … … 1277 1277 /** 1278 1278 * The 32-bit service entry point. 1279 * 1280 * @returns VBox status code. 1279 * 1280 * @returns VBox status code. 1281 1281 * @param u32Session The above session handle. 1282 1282 * @param iFunction The requested function. … … 1291 1291 DECLCALLBACKMEMBER(int, pfnServiceEP)(uint32_t u32Session, unsigned iFunction, void *pvData, size_t cbData, size_t *pcbDataReturned); 1292 1292 1293 /** The 16-bit service entry point for C code (cdecl). 1294 * 1295 * It's the same as the 32-bit entry point, but the types has 1293 /** The 16-bit service entry point for C code (cdecl). 1294 * 1295 * It's the same as the 32-bit entry point, but the types has 1296 1296 * changed to 16-bit equivalents. 1297 * 1297 * 1298 1298 * @code 1299 * int far cdecl 1300 * VBoxGuestOs2IDCService16(uint32_t u32Session, uint16_t iFunction, 1299 * int far cdecl 1300 * VBoxGuestOs2IDCService16(uint32_t u32Session, uint16_t iFunction, 1301 1301 * void far *fpvData, uint16_t cbData, uint16_t far *pcbDataReturned); 1302 1302 * @endcode … … 1304 1304 RTFAR16 fpfnServiceEP; 1305 1305 1306 /** The 16-bit service entry point for Assembly code (register). 1307 * 1306 /** The 16-bit service entry point for Assembly code (register). 1307 * 1308 1308 * This is just a wrapper around fpfnServiceEP to simplify calls 1309 1309 * from 16-bit assembly code. 1310 1310 * 1311 1311 * @returns (e)ax: VBox status code; cx: The amount of data returned. 1312 * 1312 * 1313 1313 * @param u32Session eax - The above session handle. 1314 1314 * @param iFunction dl - The requested function. … … 1322 1322 1323 1323 /** OS/2 specific: IDC client disconnect request. 1324 * 1325 * This takes no input and it doesn't return anything. Obviously this 1326 * is only recognized if it arrives thru the IDC service EP. 1324 * 1325 * This takes no input and it doesn't return anything. Obviously this 1326 * is only recognized if it arrives thru the IDC service EP. 1327 1327 */ 1328 1328 #define VBOXGUEST_IOCTL_OS2_IDC_DISCONNECT VBOXGUEST_IOCTL_CODE(48, sizeof(uint32_t)) … … 1350 1350 VBGLR3DECL(int) VbglR3GRPerform(VMMDevRequestHeader *pReq); 1351 1351 VBGLR3DECL(void) VbglR3GRFree(VMMDevRequestHeader *pReq); 1352 # ifdef __ iprt_time_h__1352 # ifdef ___iprt_time_h 1353 1353 VBGLR3DECL(int) VbglR3GetHostTime(PRTTIMESPEC pTime); 1354 # endif 1354 # endif 1355 1355 VBGLR3DECL(int) VbglR3InterruptEventWaits(void); 1356 1356
Note:
See TracChangeset
for help on using the changeset viewer.