mprapi.h 41 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002
  1. /**
  2. * This file has no copyright assigned and is placed in the Public Domain.
  3. * This file is part of the mingw-w64 runtime package.
  4. * No warranty is given; refer to the file DISCLAIMER.PD within this package.
  5. */
  6. #ifndef __ROUTING_MPRADMIN_H__
  7. #define __ROUTING_MPRADMIN_H__
  8. #include <winapifamily.h>
  9. #if WINAPI_FAMILY_PARTITION (WINAPI_PARTITION_DESKTOP)
  10. #include <lmcons.h>
  11. #include <ras.h>
  12. #include <in6addr.h>
  13. #include <wincrypt.h>
  14. #ifdef __cplusplus
  15. extern "C" {
  16. #endif
  17. #ifndef CALLBACK
  18. #define CALLBACK WINAPI
  19. #endif
  20. #define RRAS_SERVICE_NAME TEXT("RemoteAccess")
  21. #define PID_IPX 0x0000002B
  22. #define PID_IP 0x00000021
  23. #define PID_NBF 0x0000003F
  24. #define PID_ATALK 0x00000029
  25. #define MAX_INTERFACE_NAME_LEN 256
  26. #define MAX_TRANSPORT_NAME_LEN 40
  27. #define MAX_MEDIA_NAME 16
  28. #define MAX_PORT_NAME 16
  29. #define MAX_DEVICE_NAME 128
  30. #define MAX_PHONE_NUMBER_LEN 128
  31. #define MAX_DEVICETYPE_NAME 16
  32. typedef enum _ROUTER_INTERFACE_TYPE {
  33. ROUTER_IF_TYPE_CLIENT,ROUTER_IF_TYPE_HOME_ROUTER,ROUTER_IF_TYPE_FULL_ROUTER,ROUTER_IF_TYPE_DEDICATED,ROUTER_IF_TYPE_INTERNAL,
  34. ROUTER_IF_TYPE_LOOPBACK,ROUTER_IF_TYPE_TUNNEL1,ROUTER_IF_TYPE_DIALOUT
  35. } ROUTER_INTERFACE_TYPE;
  36. typedef enum _ROUTER_CONNECTION_STATE {
  37. ROUTER_IF_STATE_UNREACHABLE,ROUTER_IF_STATE_DISCONNECTED,ROUTER_IF_STATE_CONNECTING,ROUTER_IF_STATE_CONNECTED
  38. } ROUTER_CONNECTION_STATE;
  39. #define MPR_INTERFACE_OUT_OF_RESOURCES 0x00000001
  40. #define MPR_INTERFACE_ADMIN_DISABLED 0x00000002
  41. #define MPR_INTERFACE_CONNECTION_FAILURE 0x00000004
  42. #define MPR_INTERFACE_SERVICE_PAUSED 0x00000008
  43. #define MPR_INTERFACE_DIALOUT_HOURS_RESTRICTION 0x00000010
  44. #define MPR_INTERFACE_NO_MEDIA_SENSE 0x00000020
  45. #define MPR_INTERFACE_NO_DEVICE 0x00000040
  46. typedef struct _MPR_INTERFACE_0 {
  47. WCHAR wszInterfaceName[MAX_INTERFACE_NAME_LEN+1];
  48. HANDLE hInterface;
  49. WINBOOL fEnabled;
  50. ROUTER_INTERFACE_TYPE dwIfType;
  51. ROUTER_CONNECTION_STATE dwConnectionState;
  52. DWORD fUnReachabilityReasons;
  53. DWORD dwLastError;
  54. } MPR_INTERFACE_0,*PMPR_INTERFACE_0;
  55. typedef struct _MPR_IPINIP_INTERFACE_0 {
  56. WCHAR wszFriendlyName[MAX_INTERFACE_NAME_LEN+1];
  57. GUID Guid;
  58. } MPR_IPINIP_INTERFACE_0,*PMPR_IPINIP_INTERFACE_0;
  59. typedef struct _MPR_INTERFACE_1 {
  60. WCHAR wszInterfaceName[MAX_INTERFACE_NAME_LEN+1];
  61. HANDLE hInterface;
  62. WINBOOL fEnabled;
  63. ROUTER_INTERFACE_TYPE dwIfType;
  64. ROUTER_CONNECTION_STATE dwConnectionState;
  65. DWORD fUnReachabilityReasons;
  66. DWORD dwLastError;
  67. LPWSTR lpwsDialoutHoursRestriction;
  68. } MPR_INTERFACE_1,*PMPR_INTERFACE_1;
  69. #define MPR_MaxDeviceType RAS_MaxDeviceType
  70. #define MPR_MaxPhoneNumber RAS_MaxPhoneNumber
  71. #define MPR_MaxIpAddress RAS_MaxIpAddress
  72. #define MPR_MaxIpxAddress RAS_MaxIpxAddress
  73. #define MPR_MaxEntryName RAS_MaxEntryName
  74. #define MPR_MaxDeviceName RAS_MaxDeviceName
  75. #define MPR_MaxCallbackNumber RAS_MaxCallbackNumber
  76. #define MPR_MaxAreaCode RAS_MaxAreaCode
  77. #define MPR_MaxPadType RAS_MaxPadType
  78. #define MPR_MaxX25Address RAS_MaxX25Address
  79. #define MPR_MaxFacilities RAS_MaxFacilities
  80. #define MPR_MaxUserData RAS_MaxUserData
  81. #define MPRIO_SpecificIpAddr RASEO_SpecificIpAddr
  82. #define MPRIO_SpecificNameServers RASEO_SpecificNameServers
  83. #define MPRIO_IpHeaderCompression RASEO_IpHeaderCompression
  84. #define MPRIO_RemoteDefaultGateway RASEO_RemoteDefaultGateway
  85. #define MPRIO_DisableLcpExtensions RASEO_DisableLcpExtensions
  86. #define MPRIO_SwCompression RASEO_SwCompression
  87. #define MPRIO_RequireEncryptedPw RASEO_RequireEncryptedPw
  88. #define MPRIO_RequireMsEncryptedPw RASEO_RequireMsEncryptedPw
  89. #define MPRIO_RequireDataEncryption RASEO_RequireDataEncryption
  90. #define MPRIO_NetworkLogon RASEO_NetworkLogon
  91. #define MPRIO_PromoteAlternates RASEO_PromoteAlternates
  92. #define MPRIO_SecureLocalFiles RASEO_SecureLocalFiles
  93. #define MPRIO_RequireEAP RASEO_RequireEAP
  94. #define MPRIO_RequirePAP RASEO_RequirePAP
  95. #define MPRIO_RequireSPAP RASEO_RequireSPAP
  96. #define MPRIO_SharedPhoneNumbers RASEO_SharedPhoneNumbers
  97. #define MPRIO_RequireCHAP RASEO_RequireCHAP
  98. #define MPRIO_RequireMsCHAP RASEO_RequireMsCHAP
  99. #define MPRIO_RequireMsCHAP2 RASEO_RequireMsCHAP2
  100. #define MPRIO_IpSecPreSharedKey 0x80000000
  101. #define MPRNP_Ipx RASNP_Ipx
  102. #define MPRNP_Ip RASNP_Ip
  103. #define MPRDT_Modem RASDT_Modem
  104. #define MPRDT_Isdn RASDT_Isdn
  105. #define MPRDT_X25 RASDT_X25
  106. #define MPRDT_Vpn RASDT_Vpn
  107. #define MPRDT_Pad RASDT_Pad
  108. #define MPRDT_Generic RASDT_Generic
  109. #define MPRDT_Serial RASDT_Serial
  110. #define MPRDT_FrameRelay RASDT_FrameRelay
  111. #define MPRDT_Atm RASDT_Atm
  112. #define MPRDT_Sonet RASDT_Sonet
  113. #define MPRDT_SW56 RASDT_SW56
  114. #define MPRDT_Irda RASDT_Irda
  115. #define MPRDT_Parallel RASDT_Parallel
  116. #define MPRET_Phone RASET_Phone
  117. #define MPRET_Vpn RASET_Vpn
  118. #define MPRET_Direct RASET_Direct
  119. #define MPRDM_DialFirst 0
  120. #define MPRDM_DialAll RASEDM_DialAll
  121. #define MPRDM_DialAsNeeded RASEDM_DialAsNeeded
  122. #define MPRIDS_Disabled RASIDS_Disabled
  123. #define MPRIDS_UseGlobalValue RASIDS_UseGlobalValue
  124. #define MPR_ET_None ET_None
  125. #define MPR_ET_Require ET_Require
  126. #define MPR_ET_RequireMax ET_RequireMax
  127. #define MPR_ET_Optional ET_Optional
  128. #define MPR_VS_Default VS_Default
  129. #define MPR_VS_PptpOnly VS_PptpOnly
  130. #define MPR_VS_PptpFirst VS_PptpFirst
  131. #define MPR_VS_L2tpOnly VS_L2tpOnly
  132. #define MPR_VS_L2tpFirst VS_L2tpFirst
  133. typedef struct _MPR_INTERFACE_2 {
  134. WCHAR wszInterfaceName[MAX_INTERFACE_NAME_LEN+1];
  135. HANDLE hInterface;
  136. WINBOOL fEnabled;
  137. ROUTER_INTERFACE_TYPE dwIfType;
  138. ROUTER_CONNECTION_STATE dwConnectionState;
  139. DWORD fUnReachabilityReasons;
  140. DWORD dwLastError;
  141. DWORD dwfOptions;
  142. WCHAR szLocalPhoneNumber[RAS_MaxPhoneNumber + 1 ];
  143. PWCHAR szAlternates;
  144. DWORD ipaddr;
  145. DWORD ipaddrDns;
  146. DWORD ipaddrDnsAlt;
  147. DWORD ipaddrWins;
  148. DWORD ipaddrWinsAlt;
  149. DWORD dwfNetProtocols;
  150. WCHAR szDeviceType[MPR_MaxDeviceType + 1 ];
  151. WCHAR szDeviceName[MPR_MaxDeviceName + 1 ];
  152. WCHAR szX25PadType[MPR_MaxPadType + 1 ];
  153. WCHAR szX25Address[MPR_MaxX25Address + 1 ];
  154. WCHAR szX25Facilities[MPR_MaxFacilities + 1 ];
  155. WCHAR szX25UserData[MPR_MaxUserData + 1 ];
  156. DWORD dwChannels;
  157. DWORD dwSubEntries;
  158. DWORD dwDialMode;
  159. DWORD dwDialExtraPercent;
  160. DWORD dwDialExtraSampleSeconds;
  161. DWORD dwHangUpExtraPercent;
  162. DWORD dwHangUpExtraSampleSeconds;
  163. DWORD dwIdleDisconnectSeconds;
  164. DWORD dwType;
  165. DWORD dwEncryptionType;
  166. DWORD dwCustomAuthKey;
  167. DWORD dwCustomAuthDataSize;
  168. LPBYTE lpbCustomAuthData;
  169. GUID guidId;
  170. DWORD dwVpnStrategy;
  171. } MPR_INTERFACE_2,*PMPR_INTERFACE_2;
  172. #if (_WIN32_WINNT >= 0x0600)
  173. typedef struct _MPR_INTERFACE_3 {
  174. WCHAR wszInterfaceName[MAX_INTERFACE_NAME_LEN+1];
  175. HANDLE hInterface;
  176. WINBOOL fEnabled;
  177. ROUTER_INTERFACE_TYPE dwIfType;
  178. ROUTER_CONNECTION_STATE dwConnectionState;
  179. DWORD fUnReachabilityReasons;
  180. DWORD dwLastError;
  181. DWORD dwfOptions;
  182. WCHAR szLocalPhoneNumber[RAS_MaxPhoneNumber + 1];
  183. PWCHAR szAlternates;
  184. DWORD ipaddr;
  185. DWORD ipaddrDns;
  186. DWORD ipaddrDnsAlt;
  187. DWORD ipaddrWins;
  188. DWORD ipaddrWinsAlt;
  189. DWORD dwfNetProtocols;
  190. WCHAR szDeviceType[MPR_MaxDeviceType + 1];
  191. WCHAR szDeviceName[MPR_MaxDeviceName + 1];
  192. WCHAR szX25PadType[MPR_MaxPadType + 1];
  193. WCHAR szX25Address[MPR_MaxX25Address + 1];
  194. WCHAR szX25Facilities[MPR_MaxFacilities + 1];
  195. WCHAR szX25UserData[MPR_MaxUserData + 1];
  196. DWORD dwChannels;
  197. DWORD dwSubEntries;
  198. DWORD dwDialMode;
  199. DWORD dwDialExtraPercent;
  200. DWORD dwDialExtraSampleSeconds;
  201. DWORD dwHangUpExtraPercent;
  202. DWORD dwHangUpExtraSampleSeconds;
  203. DWORD dwIdleDisconnectSeconds;
  204. DWORD dwType;
  205. DWORD dwEncryptionType;
  206. DWORD dwCustomAuthKey;
  207. DWORD dwCustomAuthDataSize;
  208. LPBYTE lpbCustomAuthData;
  209. GUID guidId;
  210. DWORD dwVpnStrategy;
  211. ULONG AddressCount;
  212. IN6_ADDR ipv6addrDns;
  213. IN6_ADDR ipv6addrDnsAlt;
  214. IN6_ADDR * ipv6addr;
  215. } MPR_INTERFACE_3, *PMPR_INTERFACE_3;
  216. #endif
  217. typedef struct _MPR_DEVICE_0 {
  218. WCHAR szDeviceType[MPR_MaxDeviceType + 1 ];
  219. WCHAR szDeviceName[MPR_MaxDeviceName + 1 ];
  220. } MPR_DEVICE_0,*PMPR_DEVICE_0;
  221. typedef struct _MPR_DEVICE_1 {
  222. WCHAR szDeviceType[MPR_MaxDeviceType + 1 ];
  223. WCHAR szDeviceName[MPR_MaxDeviceName + 1 ];
  224. WCHAR szLocalPhoneNumber[MPR_MaxPhoneNumber + 1 ];
  225. PWCHAR szAlternates;
  226. } MPR_DEVICE_1,*PMPR_DEVICE_1;
  227. typedef struct _MPR_CREDENTIALSEX_0 {
  228. DWORD dwSize;
  229. LPBYTE lpbCredentialsInfo;
  230. } MPR_CREDENTIALSEX_0,*PMPR_CREDENTIALSEX_0;
  231. typedef struct _MPR_CREDENTIALSEX_1 {
  232. DWORD dwSize;
  233. LPBYTE lpbCredentialsInfo;
  234. } MPR_CREDENTIALSEX_1,*PMPR_CREDENTIALSEX_1;
  235. typedef struct _MPR_TRANSPORT_0 {
  236. DWORD dwTransportId;
  237. HANDLE hTransport;
  238. WCHAR wszTransportName[MAX_TRANSPORT_NAME_LEN+1];
  239. } MPR_TRANSPORT_0,*PMPR_TRANSPORT_0;
  240. typedef struct _MPR_IFTRANSPORT_0
  241. {
  242. DWORD dwTransportId;
  243. HANDLE hIfTransport;
  244. WCHAR wszIfTransportName[MAX_TRANSPORT_NAME_LEN+1];
  245. }
  246. MPR_IFTRANSPORT_0,*PMPR_IFTRANSPORT_0;
  247. typedef struct _MPR_SERVER_0
  248. {
  249. WINBOOL fLanOnlyMode;
  250. DWORD dwUpTime;
  251. DWORD dwTotalPorts;
  252. DWORD dwPortsInUse;
  253. }
  254. MPR_SERVER_0,*PMPR_SERVER_0;
  255. #define MPR_ENABLE_RAS_ON_DEVICE 0x00000001
  256. #define MPR_ENABLE_ROUTING_ON_DEVICE 0x00000002
  257. typedef struct _MPR_SERVER_1 {
  258. DWORD dwNumPptpPorts;
  259. DWORD dwPptpPortFlags;
  260. DWORD dwNumL2tpPorts;
  261. DWORD dwL2tpPortFlags;
  262. } MPR_SERVER_1,*PMPR_SERVER_1;
  263. typedef enum _RAS_PORT_CONDITION {
  264. RAS_PORT_NON_OPERATIONAL,RAS_PORT_DISCONNECTED,RAS_PORT_CALLING_BACK,RAS_PORT_LISTENING,RAS_PORT_AUTHENTICATING,RAS_PORT_AUTHENTICATED,
  265. RAS_PORT_INITIALIZING
  266. } RAS_PORT_CONDITION;
  267. typedef enum _RAS_HARDWARE_CONDITION {
  268. RAS_HARDWARE_OPERATIONAL,RAS_HARDWARE_FAILURE
  269. } RAS_HARDWARE_CONDITION;
  270. typedef struct _RAS_PORT_0 {
  271. HANDLE hPort;
  272. HANDLE hConnection;
  273. RAS_PORT_CONDITION dwPortCondition;
  274. DWORD dwTotalNumberOfCalls;
  275. DWORD dwConnectDuration;
  276. WCHAR wszPortName[MAX_PORT_NAME + 1 ];
  277. WCHAR wszMediaName[MAX_MEDIA_NAME + 1 ];
  278. WCHAR wszDeviceName[MAX_DEVICE_NAME + 1 ];
  279. WCHAR wszDeviceType[MAX_DEVICETYPE_NAME + 1 ];
  280. } RAS_PORT_0,*PRAS_PORT_0;
  281. typedef struct _RAS_PORT_1 {
  282. HANDLE hPort;
  283. HANDLE hConnection;
  284. RAS_HARDWARE_CONDITION dwHardwareCondition;
  285. DWORD dwLineSpeed;
  286. DWORD dwBytesXmited;
  287. DWORD dwBytesRcved;
  288. DWORD dwFramesXmited;
  289. DWORD dwFramesRcved;
  290. DWORD dwCrcErr;
  291. DWORD dwTimeoutErr;
  292. DWORD dwAlignmentErr;
  293. DWORD dwHardwareOverrunErr;
  294. DWORD dwFramingErr;
  295. DWORD dwBufferOverrunErr;
  296. DWORD dwCompressionRatioIn;
  297. DWORD dwCompressionRatioOut;
  298. } RAS_PORT_1,*PRAS_PORT_1;
  299. #define IPADDRESSLEN 15
  300. #define IPXADDRESSLEN 22
  301. #define ATADDRESSLEN 32
  302. #define MAXIPADRESSLEN 64
  303. typedef struct _PPP_NBFCP_INFO {
  304. DWORD dwError;
  305. WCHAR wszWksta[NETBIOS_NAME_LEN + 1 ];
  306. } PPP_NBFCP_INFO;
  307. typedef struct _PPP_IPCP_INFO {
  308. DWORD dwError;
  309. WCHAR wszAddress[IPADDRESSLEN + 1 ];
  310. WCHAR wszRemoteAddress[IPADDRESSLEN + 1 ];
  311. } PPP_IPCP_INFO;
  312. #define PPP_IPCP_VJ 0x00000001
  313. typedef struct _PPP_IPCP_INFO2 {
  314. DWORD dwError;
  315. WCHAR wszAddress[IPADDRESSLEN + 1 ];
  316. WCHAR wszRemoteAddress[IPADDRESSLEN + 1 ];
  317. DWORD dwOptions;
  318. DWORD dwRemoteOptions;
  319. } PPP_IPCP_INFO2;
  320. typedef struct _PPP_IPXCP_INFO {
  321. DWORD dwError;
  322. WCHAR wszAddress[IPXADDRESSLEN + 1 ];
  323. } PPP_IPXCP_INFO;
  324. typedef struct _PPP_ATCP_INFO {
  325. DWORD dwError;
  326. WCHAR wszAddress[ATADDRESSLEN + 1 ];
  327. } PPP_ATCP_INFO;
  328. typedef struct _PPP_INFO {
  329. PPP_NBFCP_INFO nbf;
  330. PPP_IPCP_INFO ip;
  331. PPP_IPXCP_INFO ipx;
  332. PPP_ATCP_INFO at;
  333. } PPP_INFO;
  334. #define RASCCPCA_MPPC 0x00000006
  335. #define RASCCPCA_STAC 0x00000005
  336. #define PPP_CCP_COMPRESSION 0x00000001
  337. #define PPP_CCP_ENCRYPTION40BITOLD 0x00000010
  338. #define PPP_CCP_ENCRYPTION40BIT 0x00000020
  339. #define PPP_CCP_ENCRYPTION128BIT 0x00000040
  340. #define PPP_CCP_ENCRYPTION56BIT 0x00000080
  341. #define PPP_CCP_HISTORYLESS 0x01000000
  342. typedef struct _PPP_CCP_INFO {
  343. DWORD dwError;
  344. DWORD dwCompressionAlgorithm;
  345. DWORD dwOptions;
  346. DWORD dwRemoteCompressionAlgorithm;
  347. DWORD dwRemoteOptions;
  348. } PPP_CCP_INFO;
  349. #define PPP_LCP_PAP 0xC023
  350. #define PPP_LCP_SPAP 0xC027
  351. #define PPP_LCP_CHAP 0xC223
  352. #define PPP_LCP_EAP 0xC227
  353. #define PPP_LCP_CHAP_MD5 0x05
  354. #define PPP_LCP_CHAP_MS 0x80
  355. #define PPP_LCP_CHAP_MSV2 0x81
  356. #define PPP_LCP_MULTILINK_FRAMING 0x00000001
  357. #define PPP_LCP_PFC 0x00000002
  358. #define PPP_LCP_ACFC 0x00000004
  359. #define PPP_LCP_SSHF 0x00000008
  360. #define PPP_LCP_DES_56 0x00000010
  361. #define PPP_LCP_3_DES 0x00000020
  362. typedef struct _PPP_LCP_INFO {
  363. DWORD dwError;
  364. DWORD dwAuthenticationProtocol;
  365. DWORD dwAuthenticationData;
  366. DWORD dwRemoteAuthenticationProtocol;
  367. DWORD dwRemoteAuthenticationData;
  368. DWORD dwTerminateReason;
  369. DWORD dwRemoteTerminateReason;
  370. DWORD dwOptions;
  371. DWORD dwRemoteOptions;
  372. DWORD dwEapTypeId;
  373. DWORD dwRemoteEapTypeId;
  374. } PPP_LCP_INFO;
  375. typedef struct _PPP_INFO_2 {
  376. PPP_NBFCP_INFO nbf;
  377. PPP_IPCP_INFO2 ip;
  378. PPP_IPXCP_INFO ipx;
  379. PPP_ATCP_INFO at;
  380. PPP_CCP_INFO ccp;
  381. PPP_LCP_INFO lcp;
  382. } PPP_INFO_2;
  383. #define RAS_FLAGS_PPP_CONNECTION 0x00000001
  384. #define RAS_FLAGS_MESSENGER_PRESENT 0x00000002
  385. #define RAS_FLAGS_QUARANTINE_PRESENT 0x00000008
  386. typedef struct _RAS_CONNECTION_0 {
  387. HANDLE hConnection;
  388. HANDLE hInterface;
  389. DWORD dwConnectDuration;
  390. ROUTER_INTERFACE_TYPE dwInterfaceType;
  391. DWORD dwConnectionFlags;
  392. WCHAR wszInterfaceName[MAX_INTERFACE_NAME_LEN + 1 ];
  393. WCHAR wszUserName[UNLEN + 1 ];
  394. WCHAR wszLogonDomain[DNLEN + 1 ];
  395. WCHAR wszRemoteComputer[NETBIOS_NAME_LEN + 1 ];
  396. } RAS_CONNECTION_0,*PRAS_CONNECTION_0;
  397. typedef struct _RAS_CONNECTION_1 {
  398. HANDLE hConnection;
  399. HANDLE hInterface;
  400. PPP_INFO PppInfo;
  401. DWORD dwBytesXmited;
  402. DWORD dwBytesRcved;
  403. DWORD dwFramesXmited;
  404. DWORD dwFramesRcved;
  405. DWORD dwCrcErr;
  406. DWORD dwTimeoutErr;
  407. DWORD dwAlignmentErr;
  408. DWORD dwHardwareOverrunErr;
  409. DWORD dwFramingErr;
  410. DWORD dwBufferOverrunErr;
  411. DWORD dwCompressionRatioIn;
  412. DWORD dwCompressionRatioOut;
  413. } RAS_CONNECTION_1,*PRAS_CONNECTION_1;
  414. typedef struct _RAS_CONNECTION_2 {
  415. HANDLE hConnection;
  416. WCHAR wszUserName[UNLEN + 1 ];
  417. ROUTER_INTERFACE_TYPE dwInterfaceType;
  418. GUID guid;
  419. PPP_INFO_2 PppInfo2;
  420. } RAS_CONNECTION_2,*PRAS_CONNECTION_2;
  421. #define RASPRIV_NoCallback 0x01
  422. #define RASPRIV_AdminSetCallback 0x02
  423. #define RASPRIV_CallerSetCallback 0x04
  424. #define RASPRIV_DialinPrivilege 0x08
  425. #define RASPRIV2_DialinPolicy 0x1
  426. #define RASPRIV_CallbackType (RASPRIV_AdminSetCallback | RASPRIV_CallerSetCallback | RASPRIV_NoCallback)
  427. typedef struct _RAS_USER_0 {
  428. BYTE bfPrivilege;
  429. WCHAR wszPhoneNumber[MAX_PHONE_NUMBER_LEN + 1];
  430. } RAS_USER_0,*PRAS_USER_0;
  431. typedef struct _RAS_USER_1 {
  432. BYTE bfPrivilege;
  433. WCHAR wszPhoneNumber[MAX_PHONE_NUMBER_LEN + 1];
  434. BYTE bfPrivilege2;
  435. } RAS_USER_1,*PRAS_USER_1;
  436. typedef HANDLE RAS_SERVER_HANDLE;
  437. typedef HANDLE MPR_SERVER_HANDLE;
  438. typedef HANDLE MIB_SERVER_HANDLE;
  439. DWORD WINAPI MprAdminConnectionEnum(RAS_SERVER_HANDLE hRasServer,DWORD dwLevel,LPBYTE *lplpbBuffer,DWORD dwPrefMaxLen,LPDWORD lpdwEntriesRead,LPDWORD lpdwTotalEntries,LPDWORD lpdwResumeHandle);
  440. DWORD WINAPI MprAdminPortEnum(RAS_SERVER_HANDLE hRasServer,DWORD dwLevel,HANDLE hConnection,LPBYTE *lplpbBuffer,DWORD dwPrefMaxLen,LPDWORD lpdwEntriesRead,LPDWORD lpdwTotalEntries,LPDWORD lpdwResumeHandle);
  441. DWORD WINAPI MprAdminConnectionGetInfo(RAS_SERVER_HANDLE hRasServer,DWORD dwLevel,HANDLE hConnection,LPBYTE *lplpbBuffer);
  442. DWORD WINAPI MprAdminPortGetInfo(RAS_SERVER_HANDLE hRasServer,DWORD dwLevel,HANDLE hPort,LPBYTE *lplpbBuffer);
  443. DWORD WINAPI MprAdminConnectionClearStats(RAS_SERVER_HANDLE hRasServer,HANDLE hConnection);
  444. DWORD WINAPI MprAdminPortClearStats(RAS_SERVER_HANDLE hRasServer,HANDLE hPort);
  445. DWORD WINAPI MprAdminPortReset(RAS_SERVER_HANDLE hRasServer,HANDLE hPort);
  446. DWORD WINAPI MprAdminPortDisconnect(RAS_SERVER_HANDLE hRasServer,HANDLE hPort);
  447. WINBOOL WINAPI MprAdminAcceptNewConnection(RAS_CONNECTION_0 *pRasConnection0,RAS_CONNECTION_1 *pRasConnection1);
  448. WINBOOL WINAPI MprAdminAcceptNewConnection2(RAS_CONNECTION_0 *pRasConnection0,RAS_CONNECTION_1 *pRasConnection1,RAS_CONNECTION_2 *pRasConnection2);
  449. WINBOOL WINAPI MprAdminAcceptNewLink (RAS_PORT_0 *pRasPort0,RAS_PORT_1 *pRasPort1);
  450. VOID WINAPI MprAdminConnectionHangupNotification(RAS_CONNECTION_0 *pRasConnection0,RAS_CONNECTION_1 *pRasConnection1);
  451. VOID WINAPI MprAdminConnectionHangupNotification2(RAS_CONNECTION_0 *pRasConnection0,RAS_CONNECTION_1 *pRasConnection1,RAS_CONNECTION_2 *pRasConnection2);
  452. DWORD WINAPI MprAdminConnectionRemoveQuarantine(HANDLE hRasServer,HANDLE hRasConnection,WINBOOL fIsIpAddress);
  453. VOID WINAPI MprAdminLinkHangupNotification (RAS_PORT_0 *pRasPort0,RAS_PORT_1 *pRasPort1);
  454. DWORD WINAPI MprAdminGetIpAddressForUser (WCHAR *lpwszUserName,WCHAR *lpwszPortName,DWORD *lpdwIpAddress,WINBOOL *bNotifyRelease);
  455. VOID WINAPI MprAdminReleaseIpAddress (WCHAR *lpszUserName,WCHAR *lpszPortName,DWORD *lpdwIpAddress);
  456. DWORD WINAPI MprAdminInitializeDll(VOID);
  457. DWORD WINAPI MprAdminTerminateDll(VOID);
  458. DWORD WINAPI MprAdminUserGetInfo(const WCHAR *lpszServer,const WCHAR *lpszUser,DWORD dwLevel,LPBYTE lpbBuffer);
  459. DWORD WINAPI MprAdminUserSetInfo(const WCHAR *lpszServer,const WCHAR *lpszUser,DWORD dwLevel,const LPBYTE lpbBuffer);
  460. DWORD WINAPI MprAdminSendUserMessage(MPR_SERVER_HANDLE hMprServer,HANDLE hConnection,LPWSTR lpwszMessage);
  461. DWORD WINAPI MprAdminGetPDCServer(const WCHAR *lpszDomain,const WCHAR *lpszServer,LPWSTR lpszPDCServer);
  462. WINBOOL WINAPI MprAdminIsServiceRunning(LPWSTR lpwsServerName);
  463. DWORD WINAPI MprAdminServerConnect(LPWSTR lpwsServerName,MPR_SERVER_HANDLE *phMprServer);
  464. VOID WINAPI MprAdminServerDisconnect(MPR_SERVER_HANDLE hMprServer);
  465. DWORD WINAPI MprAdminServerGetCredentials(MPR_SERVER_HANDLE hMprServer,DWORD dwLevel,LPBYTE *lplpbBuffer);
  466. DWORD WINAPI MprAdminServerSetCredentials(MPR_SERVER_HANDLE hMprServer,DWORD dwLevel,LPBYTE lpbBuffer);
  467. DWORD WINAPI MprAdminBufferFree(LPVOID pBuffer);
  468. DWORD WINAPI MprAdminGetErrorString(DWORD dwError,LPWSTR *lpwsErrorString);
  469. DWORD WINAPI MprAdminServerGetInfo(MPR_SERVER_HANDLE hMprServer,DWORD dwLevel,LPBYTE *lplpbBuffer);
  470. DWORD WINAPI MprAdminServerSetInfo(MPR_SERVER_HANDLE hMprServer,DWORD dwLevel,LPBYTE lpbBuffer);
  471. DWORD WINAPI MprAdminEstablishDomainRasServer (PWCHAR pszDomain,PWCHAR pszMachine,WINBOOL bEnable);
  472. DWORD WINAPI MprAdminIsDomainRasServer (PWCHAR pszDomain,PWCHAR pszMachine,PBOOL pbIsRasServer);
  473. DWORD WINAPI MprAdminTransportCreate(MPR_SERVER_HANDLE hMprServer,DWORD dwTransportId,LPWSTR lpwsTransportName,LPBYTE pGlobalInfo,DWORD dwGlobalInfoSize,LPBYTE pClientInterfaceInfo,DWORD dwClientInterfaceInfoSize,LPWSTR lpwsDLLPath);
  474. DWORD WINAPI MprAdminTransportSetInfo(MPR_SERVER_HANDLE hMprServer,DWORD dwTransportId,LPBYTE pGlobalInfo,DWORD dwGlobalInfoSize,LPBYTE pClientInterfaceInfo,DWORD dwClientInterfaceInfoSize);
  475. DWORD WINAPI MprAdminTransportGetInfo(MPR_SERVER_HANDLE hMprServer,DWORD dwTransportId,LPBYTE *ppGlobalInfo,LPDWORD lpdwGlobalInfoSize,LPBYTE *ppClientInterfaceInfo,LPDWORD lpdwClientInterfaceInfoSize);
  476. DWORD WINAPI MprAdminDeviceEnum(MPR_SERVER_HANDLE hMprServer,DWORD dwLevel,LPBYTE *lplpbBuffer,LPDWORD lpdwTotalEntries);
  477. DWORD WINAPI MprAdminInterfaceGetHandle(MPR_SERVER_HANDLE hMprServer,LPWSTR lpwsInterfaceName,HANDLE *phInterface,WINBOOL fIncludeClientInterfaces);
  478. DWORD WINAPI MprAdminInterfaceCreate(MPR_SERVER_HANDLE hMprServer,DWORD dwLevel,LPBYTE lpbBuffer,HANDLE *phInterface);
  479. DWORD WINAPI MprAdminInterfaceGetInfo(MPR_SERVER_HANDLE hMprServer,HANDLE hInterface,DWORD dwLevel,LPBYTE *lplpbBuffer);
  480. DWORD WINAPI MprAdminInterfaceSetInfo(MPR_SERVER_HANDLE hMprServer,HANDLE hInterface,DWORD dwLevel,LPBYTE lpbBuffer);
  481. DWORD WINAPI MprAdminInterfaceDelete(MPR_SERVER_HANDLE hMprServer,HANDLE hInterface);
  482. DWORD WINAPI MprAdminInterfaceDeviceGetInfo(MPR_SERVER_HANDLE hMprServer,HANDLE hInterface,DWORD dwIndex,DWORD dwLevel,LPBYTE *lplpBuffer);
  483. DWORD WINAPI MprAdminInterfaceDeviceSetInfo(MPR_SERVER_HANDLE hMprServer,HANDLE hInterface,DWORD dwIndex,DWORD dwLevel,LPBYTE lplpBuffer);
  484. DWORD WINAPI MprAdminInterfaceTransportRemove(MPR_SERVER_HANDLE hMprServer,HANDLE hInterface,DWORD dwTransportId);
  485. DWORD WINAPI MprAdminInterfaceTransportAdd(MPR_SERVER_HANDLE hMprServer,HANDLE hInterface,DWORD dwTransportId,LPBYTE pInterfaceInfo,DWORD dwInterfaceInfoSize);
  486. DWORD WINAPI MprAdminInterfaceTransportGetInfo(MPR_SERVER_HANDLE hMprServer,HANDLE hInterface,DWORD dwTransportId,LPBYTE *ppInterfaceInfo,LPDWORD lpdwpInterfaceInfoSize);
  487. DWORD WINAPI MprAdminInterfaceTransportSetInfo(MPR_SERVER_HANDLE hMprServer,HANDLE hInterface,DWORD dwTransportId,LPBYTE pInterfaceInfo,DWORD dwInterfaceInfoSize);
  488. DWORD WINAPI MprAdminInterfaceEnum(MPR_SERVER_HANDLE hMprServer,DWORD dwLevel,LPBYTE *lplpbBuffer,DWORD dwPrefMaxLen,LPDWORD lpdwEntriesRead,LPDWORD lpdwTotalEntries,LPDWORD lpdwResumeHandle);
  489. DWORD WINAPI MprSetupIpInIpInterfaceFriendlyNameEnum(PWCHAR pwszMachineName,LPBYTE *lplpBuffer,LPDWORD lpdwEntriesRead);
  490. DWORD WINAPI MprSetupIpInIpInterfaceFriendlyNameFree(LPVOID lpBuffer);
  491. DWORD WINAPI MprSetupIpInIpInterfaceFriendlyNameCreate(PWCHAR pwszMachineName,PMPR_IPINIP_INTERFACE_0 pNameInformation);
  492. DWORD WINAPI MprSetupIpInIpInterfaceFriendlyNameDelete(PWCHAR pwszMachineName,GUID *pGuid);
  493. DWORD WINAPI MprAdminInterfaceSetCredentials(LPWSTR lpwsServer,LPWSTR lpwsInterfaceName,LPWSTR lpwsUserName,LPWSTR lpwsDomainName,LPWSTR lpwsPassword);
  494. DWORD WINAPI MprAdminInterfaceGetCredentials(LPWSTR lpwsServer,LPWSTR lpwsInterfaceName,LPWSTR lpwsUserName,LPWSTR lpwsPassword,LPWSTR lpwsDomainName);
  495. DWORD WINAPI MprAdminInterfaceSetCredentialsEx(MPR_SERVER_HANDLE hMprServer,HANDLE hInterface,DWORD dwLevel,LPBYTE lpbBuffer);
  496. DWORD WINAPI MprAdminInterfaceGetCredentialsEx(MPR_SERVER_HANDLE hMprServer,HANDLE hInterface,DWORD dwLevel,LPBYTE *lplpbBuffer);
  497. DWORD WINAPI MprAdminInterfaceConnect(MPR_SERVER_HANDLE hMprServer,HANDLE hInterface,HANDLE hEvent,WINBOOL fSynchronous);
  498. DWORD WINAPI MprAdminInterfaceDisconnect(MPR_SERVER_HANDLE hMprServer,HANDLE hInterface);
  499. DWORD WINAPI MprAdminInterfaceUpdateRoutes(MPR_SERVER_HANDLE hMprServer,HANDLE hInterface,DWORD dwProtocolId,HANDLE hEvent);
  500. DWORD WINAPI MprAdminInterfaceQueryUpdateResult(MPR_SERVER_HANDLE hMprServer,HANDLE hInterface,DWORD dwProtocolId,LPDWORD lpdwUpdateResult);
  501. DWORD WINAPI MprAdminInterfaceUpdatePhonebookInfo(MPR_SERVER_HANDLE hMprServer,HANDLE hInterface);
  502. DWORD WINAPI MprAdminRegisterConnectionNotification(MPR_SERVER_HANDLE hMprServer,HANDLE hEventNotification);
  503. DWORD WINAPI MprAdminDeregisterConnectionNotification(MPR_SERVER_HANDLE hMprServer,HANDLE hEventNotification);
  504. DWORD WINAPI MprAdminMIBServerConnect(LPWSTR lpwsServerName,MIB_SERVER_HANDLE *phMibServer);
  505. VOID WINAPI MprAdminMIBServerDisconnect(MIB_SERVER_HANDLE hMibServer);
  506. DWORD WINAPI MprAdminMIBEntryCreate(MIB_SERVER_HANDLE hMibServer,DWORD dwPid,DWORD dwRoutingPid,LPVOID lpEntry,DWORD dwEntrySize);
  507. DWORD WINAPI MprAdminMIBEntryDelete(MIB_SERVER_HANDLE hMibServer,DWORD dwProtocolId,DWORD dwRoutingPid,LPVOID lpEntry,DWORD dwEntrySize);
  508. DWORD WINAPI MprAdminMIBEntrySet(MIB_SERVER_HANDLE hMibServer,DWORD dwProtocolId,DWORD dwRoutingPid,LPVOID lpEntry,DWORD dwEntrySize);
  509. DWORD WINAPI MprAdminMIBEntryGet(MIB_SERVER_HANDLE hMibServer,DWORD dwProtocolId,DWORD dwRoutingPid,LPVOID lpInEntry,DWORD dwInEntrySize,LPVOID *lplpOutEntry,LPDWORD lpOutEntrySize);
  510. DWORD WINAPI MprAdminMIBEntryGetFirst(MIB_SERVER_HANDLE hMibServer,DWORD dwProtocolId,DWORD dwRoutingPid,LPVOID lpInEntry,DWORD dwInEntrySize,LPVOID *lplpOutEntry,LPDWORD lpOutEntrySize);
  511. DWORD WINAPI MprAdminMIBEntryGetNext(MIB_SERVER_HANDLE hMibServer,DWORD dwProtocolId,DWORD dwRoutingPid,LPVOID lpInEntry,DWORD dwInEntrySize,LPVOID *lplpOutEntry,LPDWORD lpOutEntrySize);
  512. DWORD WINAPI MprAdminMIBGetTrapInfo(MIB_SERVER_HANDLE hMibServer,DWORD dwProtocolId,DWORD dwRoutingPid,LPVOID lpInData,DWORD dwInDataSize,LPVOID *lplpOutData,LPDWORD lpOutDataSize);
  513. DWORD WINAPI MprAdminMIBSetTrapInfo(DWORD dwProtocolId,DWORD dwRoutingPid,HANDLE hEvent,LPVOID lpInData,DWORD dwInDataSize,LPVOID *lplpOutData,LPDWORD lpOutDataSize);
  514. DWORD WINAPI MprAdminMIBBufferFree(LPVOID pBuffer);
  515. DWORD WINAPI MprConfigServerInstall(DWORD dwLevel,PVOID pBuffer);
  516. DWORD WINAPI MprConfigServerConnect(LPWSTR lpwsServerName,HANDLE *phMprConfig);
  517. VOID WINAPI MprConfigServerDisconnect(HANDLE hMprConfig);
  518. DWORD WINAPI MprConfigServerRefresh(HANDLE hMprConfig);
  519. DWORD WINAPI MprConfigBufferFree(LPVOID pBuffer);
  520. DWORD WINAPI MprConfigServerGetInfo(HANDLE hMprConfig,DWORD dwLevel,LPBYTE *lplpbBuffer);
  521. DWORD WINAPI MprConfigServerSetInfo(MPR_SERVER_HANDLE hMprServer,DWORD dwLevel,LPBYTE lpbBuffer);
  522. DWORD WINAPI MprConfigServerBackup(HANDLE hMprConfig,LPWSTR lpwsPath);
  523. DWORD WINAPI MprConfigServerRestore(HANDLE hMprConfig,LPWSTR lpwsPath);
  524. DWORD WINAPI MprConfigTransportCreate(HANDLE hMprConfig,DWORD dwTransportId,LPWSTR lpwsTransportName,LPBYTE pGlobalInfo,DWORD dwGlobalInfoSize,LPBYTE pClientInterfaceInfo,DWORD dwClientInterfaceInfoSize,LPWSTR lpwsDLLPath,HANDLE *phRouterTransport);
  525. DWORD WINAPI MprConfigTransportDelete(HANDLE hMprConfig,HANDLE hRouterTransport);
  526. DWORD WINAPI MprConfigTransportGetHandle(HANDLE hMprConfig,DWORD dwTransportId,HANDLE *phRouterTransport);
  527. DWORD WINAPI MprConfigTransportSetInfo(HANDLE hMprConfig,HANDLE hRouterTransport,LPBYTE pGlobalInfo,DWORD dwGlobalInfoSize,LPBYTE pClientInterfaceInfo,DWORD dwClientInterfaceInfoSize,LPWSTR lpwsDLLPath);
  528. DWORD WINAPI MprConfigTransportGetInfo(HANDLE hMprConfig,HANDLE hRouterTransport,LPBYTE *ppGlobalInfo,LPDWORD lpdwGlobalInfoSize,LPBYTE *ppClientInterfaceInfo,LPDWORD lpdwClientInterfaceInfoSize,LPWSTR *lplpwsDLLPath);
  529. DWORD WINAPI MprConfigTransportEnum(HANDLE hMprConfig,DWORD dwLevel,LPBYTE *lplpBuffer,DWORD dwPrefMaxLen,LPDWORD lpdwEntriesRead,LPDWORD lpdwTotalEntries,LPDWORD lpdwResumeHandle);
  530. DWORD WINAPI MprConfigInterfaceCreate(HANDLE hMprConfig,DWORD dwLevel,LPBYTE lpbBuffer,HANDLE *phRouterInterface);
  531. DWORD WINAPI MprConfigInterfaceDelete(HANDLE hMprConfig,HANDLE hRouterInterface);
  532. DWORD WINAPI MprConfigInterfaceGetHandle(HANDLE hMprConfig,LPWSTR lpwsInterfaceName,HANDLE *phRouterInterface);
  533. DWORD WINAPI MprConfigInterfaceGetInfo(HANDLE hMprConfig,HANDLE hRouterInterface,DWORD dwLevel,LPBYTE *lplpBuffer,LPDWORD lpdwBufferSize);
  534. DWORD WINAPI MprConfigInterfaceSetInfo(HANDLE hMprConfig,HANDLE hRouterInterface,DWORD dwLevel,LPBYTE lpbBuffer);
  535. DWORD WINAPI MprConfigInterfaceEnum(HANDLE hMprConfig,DWORD dwLevel,LPBYTE *lplpBuffer,DWORD dwPrefMaxLen,LPDWORD lpdwEntriesRead,LPDWORD lpdwTotalEntries,LPDWORD lpdwResumeHandle);
  536. DWORD WINAPI MprConfigInterfaceTransportAdd(HANDLE hMprConfig,HANDLE hRouterInterface,DWORD dwTransportId,LPWSTR lpwsTransportName,LPBYTE pInterfaceInfo,DWORD dwInterfaceInfoSize,HANDLE *phRouterIfTransport);
  537. DWORD WINAPI MprConfigInterfaceTransportRemove(HANDLE hMprConfig,HANDLE hRouterInterface,HANDLE hRouterIfTransport);
  538. DWORD WINAPI MprConfigInterfaceTransportGetHandle(HANDLE hMprConfig,HANDLE hRouterInterface,DWORD dwTransportId,HANDLE *phRouterIfTransport);
  539. DWORD WINAPI MprConfigInterfaceTransportGetInfo(HANDLE hMprConfig,HANDLE hRouterInterface,HANDLE hRouterIfTransport,LPBYTE *ppInterfaceInfo,LPDWORD lpdwInterfaceInfoSize);
  540. DWORD WINAPI MprConfigInterfaceTransportSetInfo(HANDLE hMprConfig,HANDLE hRouterInterface,HANDLE hRouterIfTransport,LPBYTE pInterfaceInfo,DWORD dwInterfaceInfoSize);
  541. DWORD WINAPI MprConfigInterfaceTransportEnum(HANDLE hMprConfig,HANDLE hRouterInterface,DWORD dwLevel,LPBYTE *lplpBuffer,DWORD dwPrefMaxLen,LPDWORD lpdwEntriesRead,LPDWORD lpdwTotalEntries,LPDWORD lpdwResumeHandle);
  542. DWORD WINAPI MprConfigGetFriendlyName(HANDLE hMprConfig,PWCHAR pszGuidName,PWCHAR pszBuffer,DWORD dwBufferSize);
  543. DWORD WINAPI MprConfigGetGuidName(HANDLE hMprConfig,PWCHAR pszFriendlyName,PWCHAR pszBuffer,DWORD dwBufferSize);
  544. DWORD WINAPI MprInfoCreate(DWORD dwVersion,LPVOID *lplpNewHeader);
  545. DWORD WINAPI MprInfoDelete(LPVOID lpHeader);
  546. DWORD WINAPI MprInfoRemoveAll(LPVOID lpHeader,LPVOID *lplpNewHeader);
  547. DWORD WINAPI MprInfoDuplicate(LPVOID lpHeader,LPVOID *lplpNewHeader);
  548. DWORD WINAPI MprInfoBlockAdd(LPVOID lpHeader,DWORD dwInfoType,DWORD dwItemSize,DWORD dwItemCount,LPBYTE lpItemData,LPVOID *lplpNewHeader);
  549. DWORD WINAPI MprInfoBlockRemove(LPVOID lpHeader,DWORD dwInfoType,LPVOID *lplpNewHeader);
  550. DWORD WINAPI MprInfoBlockSet(LPVOID lpHeader,DWORD dwInfoType,DWORD dwItemSize,DWORD dwItemCount,LPBYTE lpItemData,LPVOID *lplpNewHeader);
  551. DWORD WINAPI MprInfoBlockFind(LPVOID lpHeader,DWORD dwInfoType,LPDWORD lpdwItemSize,LPDWORD lpdwItemCount,LPBYTE *lplpItemData);
  552. DWORD WINAPI MprInfoBlockQuerySize(LPVOID lpHeader);
  553. #define MprInfoBlockExists(h,t) (MprInfoBlockFind((h),(t),NULL,NULL,NULL)==NO_ERROR)
  554. #if (_WIN32_WINNT >= 0x0600)
  555. typedef enum _RAS_QUARANTINE_STATE {
  556. RAS_QUAR_STATE_NORMAL,
  557. RAS_QUAR_STATE_QUARANTINE,
  558. RAS_QUAR_STATE_PROBATION,
  559. RAS_QUAR_STATE_NOT_CAPABLE
  560. } RAS_QUARANTINE_STATE;
  561. typedef struct _MPR_FILTER_0 {
  562. WINBOOL fEnabled;
  563. } MPR_FILTER_0, *PMPR_FILTER_0;
  564. typedef struct _MPR_SERVER_2 {
  565. DWORD dwNumPptpPorts;
  566. DWORD dwPptpPortFlags;
  567. DWORD dwNumL2tpPorts;
  568. DWORD dwL2tpPortFlags;
  569. DWORD dwNumSstpPorts;
  570. DWORD dwSstpPortFlags;
  571. } MPR_SERVER_2, *PMPR_SERVER_2;
  572. typedef struct _PPP_IPV6CP_INFO {
  573. DWORD dwVersion;
  574. DWORD dwSize;
  575. DWORD dwError;
  576. BYTE bInterfaceIdentifier[8];
  577. BYTE bRemoteInterfaceIdentifier[8];
  578. DWORD dwOptions;
  579. DWORD dwRemoteOptions;
  580. BYTE bPrefix[8];
  581. DWORD dwPrefixLength;
  582. } PPP_IPV6_CP_INFO, *PPPP_IPV6_CP_INFO;
  583. typedef struct _PPP_INFO_3 {
  584. PPP_NBFCP_INFO nbf;
  585. PPP_IPCP_INFO2 ip;
  586. PPP_IPV6_CP_INFO ipv6;
  587. PPP_CCP_INFO ccp;
  588. PPP_LCP_INFO lcp;
  589. } PPP_INFO_3;
  590. typedef struct _RAS_CONNECTION_3 {
  591. DWORD dwVersion;
  592. DWORD dwSize;
  593. HANDLE hConnection;
  594. WCHAR wszUserName[UNLEN + 1];
  595. ROUTER_INTERFACE_TYPE dwInterfaceType;
  596. GUID guid;
  597. PPP_INFO_3 PppInfo3;
  598. RAS_QUARANTINE_STATE rasQuarState;
  599. FILETIME timer;
  600. } RAS_CONNECTION_3, *PRAS_CONNECTION_3;
  601. WINBOOL CALLBACK MprAdminAcceptNewConnection3(
  602. RAS_CONNECTION_0 *pRasConnection0,
  603. RAS_CONNECTION_1 *pRasConnection1,
  604. RAS_CONNECTION_2 *pRasConnection2,
  605. RAS_CONNECTION_3 *pRasConnection3
  606. );
  607. WINBOOL CALLBACK MprAdminAcceptReauthentication(
  608. RAS_CONNECTION_0 *pRasConnection0,
  609. RAS_CONNECTION_1 *pRasConnection1,
  610. RAS_CONNECTION_2 *pRasConnection2,
  611. RAS_CONNECTION_3 *pRasConnection3
  612. );
  613. void CALLBACK MprAdminConnectionHangupNotification3(
  614. RAS_CONNECTION_0 *pRasConnection0,
  615. RAS_CONNECTION_1 *pRasConnection1,
  616. RAS_CONNECTION_2 *pRasConnection2,
  617. RAS_CONNECTION_3 *pRasConnection3
  618. );
  619. DWORD CALLBACK MprAdminGetIpv6AddressForUser(
  620. WCHAR *lpwszUserName,
  621. WCHAR *lpwszPortName,
  622. IN6_ADDR *lpdwIpv6Address,
  623. WINBOOL *bNotifyRelease
  624. );
  625. DWORD CALLBACK MprAdminReleaseIpv6AddressForUser(
  626. WCHAR *lpwszUserName,
  627. WCHAR *lpwszPortName,
  628. IN6_ADDR *lpdwIpv6Address
  629. );
  630. DWORD WINAPI MprConfigFilterGetInfo(
  631. HANDLE hMprConfig,
  632. DWORD dwLevel,
  633. DWORD dwTransportId,
  634. LPBYTE lpBuffer
  635. );
  636. DWORD WINAPI MprConfigFilterSetInfo(
  637. HANDLE hMprConfig,
  638. DWORD dwLevel,
  639. DWORD dwTransportId,
  640. LPBYTE lpBuffer
  641. );
  642. #endif /*(_WIN32_WINNT >= 0x0600)*/
  643. #if (_WIN32_WINNT >= 0x0601)
  644. #define MPRAPI_RAS_CONNECTION_OBJECT_REVISION_1 0x01
  645. #define MPRAPI_MPR_SERVER_OBJECT_REVISION_1 0x01
  646. #define MPRAPI_MPR_SERVER_SET_CONFIG_OBJECT_REVISION_1 0x01
  647. typedef enum {
  648. MPRAPI_OBJECT_TYPE_RAS_CONNECTION_OBJECT = 0x1,
  649. MPRAPI_OBJECT_TYPE_MPR_SERVER_OBJECT = 0x2,
  650. MPRAPI_OBJECT_TYPE_MPR_SERVER_SET_CONFIG_OBJECT = 0x3,
  651. MPRAPI_OBJECT_TYPE_AUTH_VALIDATION_OBJECT = 0x4,
  652. MPRAPI_OBJECT_TYPE_UPDATE_CONNECTION_OBJECT = 0x5
  653. } MPRAPI_OBJECT_TYPE;
  654. typedef struct _MPRAPI_OBJECT_HEADER {
  655. UCHAR revision;
  656. UCHAR type;
  657. USHORT size;
  658. } MPRAPI_OBJECT_HEADER, *PMPRAPI_OBJECT_HEADER;
  659. typedef struct _AUTH_VALIDATION_EX {
  660. MPRAPI_OBJECT_HEADER Header;
  661. HANDLE hRasConnection;
  662. WCHAR wszUserName[UNLEN + 1 ];
  663. WCHAR wszLogonDomain[DNLEN + 1 ];
  664. DWORD AuthInfoSize;
  665. BYTE AuthInfo[1];
  666. } AUTH_VALIDATION_EX, *PAUTH_VALIDATION_EX;
  667. #define RAS_FLAGS_PPP_CONNECTION 0x00000001
  668. #define RAS_FLAGS_MESSENGER_PRESENT 0x00000002
  669. #define RAS_FLAGS_QUARANTINE_PRESENT 0x00000008
  670. #define RAS_FLAGS_ARAP_CONNECTION 0x00000010
  671. #define RAS_FLAGS_IKEV2_CONNECTION 0x00000010
  672. #define RAS_FLAGS_DORMANT 0x00000020
  673. #define IPADDRESSLEN 15
  674. typedef struct _PPP_PROJECTION_INFO {
  675. DWORD dwIPv4NegotiationError;
  676. WCHAR wszAddress[IPADDRESSLEN + 1];
  677. WCHAR wszRemoteAddress[IPADDRESSLEN + 1];
  678. DWORD dwIPv4Options;
  679. DWORD dwIPv4RemoteOptions;
  680. ULONG64 IPv4SubInterfaceIndex;
  681. DWORD dwIPv6NegotiationError;
  682. BYTE bInterfaceIdentifier[8];
  683. BYTE bRemoteInterfaceIdentifier[8];
  684. BYTE bPrefix[8];
  685. DWORD dwPrefixLength;
  686. ULONG64 IPv6SubInterfaceIndex;
  687. DWORD dwLcpError;
  688. DWORD dwAuthenticationProtocol;
  689. DWORD dwAuthenticationData;
  690. DWORD dwRemoteAuthenticationProtocol;
  691. DWORD dwRemoteAuthenticationData;
  692. DWORD dwLcpTerminateReason;
  693. DWORD dwLcpRemoteTerminateReason;
  694. DWORD dwLcpOptions;
  695. DWORD dwLcpRemoteOptions;
  696. DWORD dwEapTypeId;
  697. DWORD dwRemoteEapTypeId;
  698. DWORD dwCcpError;
  699. DWORD dwCompressionAlgorithm;
  700. DWORD dwCcpOptions;
  701. DWORD dwRemoteCompressionAlgorithm;
  702. DWORD dwCcpRemoteOptions;
  703. } PPP_PROJECTION_INFO, *PPPP_PROJECTION_INFO;
  704. typedef struct _IKEV2_PROJECTION_INFO {
  705. DWORD dwIPv4NegotiationError;
  706. WCHAR wszAddress[IPADDRESSLEN + 1];
  707. WCHAR wszRemoteAddress[IPADDRESSLEN + 1];
  708. ULONG64 IPv4SubInterfaceIndex;
  709. DWORD dwIPv6NegotiationError;
  710. BYTE bInterfaceIdentifier[8];
  711. BYTE bRemoteInterfaceIdentifier[8];
  712. BYTE bPrefix[8];
  713. DWORD dwPrefixLength;
  714. ULONG64 IPv6SubInterfaceIndex;
  715. DWORD dwOptions;
  716. DWORD dwAuthenticationProtocol;
  717. DWORD dwEapTypeId;
  718. DWORD dwCompressionAlgorithm;
  719. DWORD dwEncryptionMethod;
  720. } IKEV2_PROJECTION_INFO, *PIKEV2_PROJECTION_INFO;
  721. typedef struct _PROJECTION_INFO {
  722. UCHAR projectionInfoType;
  723. __C89_NAMELESS union {
  724. IKEV2_PROJECTION_INFO Ikev2ProjectionInfo;
  725. PPP_PROJECTION_INFO PppProjectionInfo;
  726. } DUMMYUNIONNAME;
  727. } PROJECTION_INFO, *PPROJECTION_INFO;
  728. typedef struct _RAS_CONNECTION_EX {
  729. MPRAPI_OBJECT_HEADER Header;
  730. DWORD dwConnectDuration;
  731. ROUTER_INTERFACE_TYPE dwInterfaceType;
  732. DWORD dwConnectionFlags;
  733. WCHAR wszInterfaceName[MAX_INTERFACE_NAME_LEN + 1];
  734. WCHAR wszUserName[UNLEN + 1];
  735. WCHAR wszLogonDomain[DNLEN + 1];
  736. WCHAR wszRemoteComputer[NETBIOS_NAME_LEN + 1];
  737. GUID guid;
  738. RAS_QUARANTINE_STATE rasQuarState;
  739. FILETIME probationTime;
  740. DWORD dwBytesXmited;
  741. DWORD dwBytesRcved;
  742. DWORD dwFramesXmited;
  743. DWORD dwFramesRcved;
  744. DWORD dwCrcErr;
  745. DWORD dwTimeoutErr;
  746. DWORD dwAlignmentErr;
  747. DWORD dwHardwareOverrunErr;
  748. DWORD dwFramingErr;
  749. DWORD dwBufferOverrunErr;
  750. DWORD dwCompressionRatioIn;
  751. DWORD dwCompressionRatioOut;
  752. DWORD dwNumSwitchOvers;
  753. WCHAR wszRemoteEndpointAddress[MAXIPADRESSLEN+1];
  754. WCHAR wszLocalEndpointAddress[MAXIPADRESSLEN+1];
  755. PROJECTION_INFO ProjectionInfo;
  756. HANDLE hConnection;
  757. HANDLE hInterface;
  758. } RAS_CONNECTION_EX, *PRAS_CONNECTION_EX;
  759. typedef struct _RAS_UPDATE_CONNECTION {
  760. MPRAPI_OBJECT_HEADER Header;
  761. DWORD dwIfIndex;
  762. WCHAR wszLocalEndpointAddress[MAXIPADRESSLEN+1];
  763. WCHAR wszRemoteEndpointAddress[MAXIPADRESSLEN+1];
  764. } RAS_UPDATE_CONNECTION, *PRAS_UPDATE_CONNECTION;
  765. #define MPRAPI_IKEV2_SET_TUNNEL_CONFIG_PARAMS 0x01
  766. typedef struct _IKEV2_TUNNEL_CONFIG_PARAMS {
  767. DWORD dwIdleTimeout;
  768. DWORD dwNetworkBlackoutTime;
  769. DWORD dwSaLifeTime;
  770. DWORD dwSaDataSizeForRenegotiation;
  771. DWORD dwConfigOptions;
  772. DWORD dwTotalCertificates;
  773. CERT_NAME_BLOB *certificateNames;
  774. } IKEV2_TUNNEL_CONFIG_PARAMS, *PIKEV2_TUNNEL_CONFIG_PARAMS;
  775. typedef struct _IKEV2_CONFIG_PARAMS {
  776. DWORD dwNumPorts;
  777. DWORD dwPortFlags;
  778. DWORD dwTunnelConfigParamFlags;
  779. IKEV2_TUNNEL_CONFIG_PARAMS TunnelConfigParams;
  780. } IKEV2_CONFIG_PARAMS, *PIKEV2_CONFIG_PARAMS;
  781. typedef struct _PPTP_CONFIG_PARAMS {
  782. DWORD dwNumPorts;
  783. DWORD dwPortFlags;
  784. } PPTP_CONFIG_PARAMS, *PPPTP_CONFIG_PARAMS;
  785. typedef struct _L2TP_CONFIG_PARAMS {
  786. DWORD dwNumPorts;
  787. DWORD dwPortFlags;
  788. } L2TP_CONFIG_PARAMS, *PL2TP_CONFIG_PARAMS;
  789. typedef struct _SSTP_CERT_INFO {
  790. BOOL isDefault;
  791. CRYPT_HASH_BLOB certBlob;
  792. } SSTP_CERT_INFO, *PSSTP_CERT_INFO;
  793. typedef struct _SSTP_CONFIG_PARAMS {
  794. DWORD dwNumPorts;
  795. DWORD dwPortFlags;
  796. BOOL isUseHttps;
  797. DWORD certAlgorithm;
  798. SSTP_CERT_INFO sstpCertDetails;
  799. } SSTP_CONFIG_PARAMS, *PSSTP_CONFIG_PARAMS;
  800. typedef struct _MPRAPI_TUNNEL_CONFIG_PARAMS {
  801. IKEV2_CONFIG_PARAMS IkeConfigParams;
  802. PPTP_CONFIG_PARAMS PptpConfigParams;
  803. L2TP_CONFIG_PARAMS L2tpConfigParams;
  804. SSTP_CONFIG_PARAMS SstpConfigParams;
  805. } MPRAPI_TUNNEL_CONFIG_PARAMS, *PMPRAPI_TUNNEL_CONFIG_PARAMS;
  806. typedef struct _MPR_SERVER_SET_CONFIG_EX {
  807. MPRAPI_OBJECT_HEADER Header;
  808. DWORD setConfigForProtocols;
  809. MPRAPI_TUNNEL_CONFIG_PARAMS ConfigParams;
  810. } MPR_SERVER_SET_CONFIG_EX, *PMPR_SERVER_SET_CONFIG_EX;
  811. typedef struct _MPR_SERVER_EX {
  812. MPRAPI_OBJECT_HEADER Header;
  813. DWORD fLanOnlyMode;
  814. DWORD dwUpTime;
  815. DWORD dwTotalPorts;
  816. DWORD dwPortsInUse;
  817. DWORD Reserved;
  818. MPRAPI_TUNNEL_CONFIG_PARAMS ConfigParams;
  819. } MPR_SERVER_EX, *PMPR_SERVER_EX;
  820. typedef DWORD (APIENTRY * PMPRADMINGETIPADDRESSFORUSER)(WCHAR *, WCHAR *, DWORD *, WINBOOL *);
  821. typedef VOID (APIENTRY * PMPRADMINRELEASEIPADRESS)(WCHAR *, WCHAR *, DWORD *);
  822. typedef DWORD (APIENTRY * PMPRADMINGETIPV6ADDRESSFORUSER)(WCHAR *, WCHAR *, IN6_ADDR *, WINBOOL *);
  823. typedef VOID (APIENTRY * PMPRADMINRELEASEIPV6ADDRESSFORUSER)(WCHAR *, WCHAR *, IN6_ADDR *);
  824. typedef WINBOOL (APIENTRY * PMPRADMINACCEPTNEWLINK)(RAS_PORT_0 *, RAS_PORT_1 *);
  825. typedef VOID (APIENTRY * PMPRADMINLINKHANGUPNOTIFICATION)(RAS_PORT_0 *, RAS_PORT_1 *);
  826. typedef DWORD (APIENTRY * PMPRADMINTERMINATEDLL)();
  827. typedef BOOL (APIENTRY * PMPRADMINACCEPTNEWCONNECTIONEX)(RAS_CONNECTION_EX *);
  828. typedef BOOL (APIENTRY * PMPRADMINACCEPTREAUTHENTICATIONEX)(RAS_CONNECTION_EX *);
  829. typedef VOID (APIENTRY * PMPRADMINCONNECTIONHANGUPNOTIFICATIONEX)(RAS_CONNECTION_EX *);
  830. typedef struct _MPRAPI_ADMIN_DLL_CALLBACKS {
  831. UCHAR revision;
  832. PMPRADMINGETIPADDRESSFORUSER lpfnMprAdminGetIpAddressForUser;
  833. PMPRADMINRELEASEIPADRESS lpfnMprAdminReleaseIpAddress;
  834. PMPRADMINGETIPV6ADDRESSFORUSER lpfnMprAdminGetIpv6AddressForUser;
  835. PMPRADMINRELEASEIPV6ADDRESSFORUSER lpfnMprAdminReleaseIpV6AddressForUser;
  836. PMPRADMINACCEPTNEWLINK lpfnRasAdminAcceptNewLink;
  837. PMPRADMINLINKHANGUPNOTIFICATION lpfnRasAdminLinkHangupNotification;
  838. PMPRADMINTERMINATEDLL lpfnRasAdminTerminateDll;
  839. PMPRADMINACCEPTNEWCONNECTIONEX lpfnRasAdminAcceptNewConnectionEx;
  840. PMPRADMINACCEPTREAUTHENTICATIONEX lpfnRasAdminAcceptReauthenticationEx;
  841. PMPRADMINCONNECTIONHANGUPNOTIFICATIONEX lpfnRasAdminConnectionHangupNotificationEx;
  842. } MPRAPI_ADMIN_DLL_CALLBACKS, *PMPRAPI_ADMIN_DLL_CALLBACKS;
  843. DWORD APIENTRY MprConfigServerSetInfoEx(HANDLE hMprConfig,MPR_SERVER_SET_CONFIG_EX *pSetServerConfig);
  844. DWORD APIENTRY MprConfigServerGetInfoEx(
  845. HANDLE hMprConfig,
  846. MPR_SERVER_EX *pServerInfo
  847. );
  848. DWORD APIENTRY MprAdminConnectionEnumEx(
  849. RAS_SERVER_HANDLE hRasServer,
  850. PMPRAPI_OBJECT_HEADER pObjectHeader,
  851. DWORD dwPreferedMaxLen,
  852. LPDWORD lpdwEntriesRead,
  853. LPDWORD lpdwTotalEntries,
  854. PRAS_CONNECTION_EX *ppRasConn,
  855. LPDWORD lpdwResumeHandle
  856. );
  857. DWORD APIENTRY MprAdminConnectionGetInfoEx(
  858. RAS_SERVER_HANDLE hRasServer,
  859. HANDLE hConnection,
  860. PRAS_CONNECTION_EX pRasConnection
  861. );
  862. DWORD APIENTRY MprAdminInitializeDllEx(
  863. PMPRAPI_ADMIN_DLL_CALLBACKS pAdminCallbacks
  864. );
  865. DWORD APIENTRY MprAdminIsServiceInitialized(
  866. LPWSTR lpwsServerName,
  867. WINBOOL *fIsServiceInitialized
  868. );
  869. DWORD APIENTRY MprAdminServerGetInfoEx(
  870. MPR_SERVER_HANDLE hMprServer,
  871. MPR_SERVER_EX *pServerInfo
  872. );
  873. DWORD APIENTRY MprAdminServerSetInfoEx(
  874. MPR_SERVER_HANDLE hMprServer,
  875. MPR_SERVER_SET_CONFIG_EX *pServerInfo
  876. );
  877. #endif /*(_WIN32_WINNT >= 0x0601)*/
  878. #ifdef __cplusplus
  879. }
  880. #endif
  881. #endif /* WINAPI_FAMILY_PARTITION (WINAPI_PARTITION_DESKTOP) */
  882. #endif /* __ROUTING_MPRADMIN_H__ */