Leaked source code of windows server 2003
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

307 lines
12 KiB

  1. /*==========================================================================
  2. *
  3. * Copyright (C) 2000-2002 Microsoft Corporation. All Rights Reserved.
  4. *
  5. * File: paramval.h
  6. * Content: DirectPlat8 Parameter Validation helper routines
  7. *@@BEGIN_MSINTERNAL
  8. * History:
  9. * Date By Reason
  10. * ==== == ======
  11. * 02/28/00 rmt Created
  12. * 04/17/00 rmt More param validation
  13. * 04/19/00 mjn Changed DN_RemoveClientFromGroup to DN_ValidateRemoveClientFromGroup (wrong function name)
  14. * 08/03/00 rmt Bug #41244 - Wrong return codes -- part 2
  15. * 08/04/00 mjn Added dwFlags to DN_ValidateGetConnectionInfoHelper()
  16. * 07/24/01 mjn Added DPNBUILD_NOPARAMVAL compile flag
  17. * 07/24/01 mjn Added DPNBUILD_NOSERVER compile flag
  18. * 10/08/01 vanceo Added multicast interface method validation
  19. *@@END_MSINTERNAL
  20. *
  21. ***************************************************************************/
  22. #ifndef __PARAMVAL_H
  23. #define __PARAMVAL_H
  24. #define DN_CHECK_LOCALHOST( x ) (x->NameTable.GetLocalPlayer() == x->NameTable.GetHostPlayer())
  25. #ifndef DPNBUILD_NOPARAMVAL
  26. extern BOOL IsValidDirectPlay8Object( LPVOID lpvObject );
  27. extern HRESULT DN_ValidateDestroyPlayer(PVOID pInterface,
  28. const DPNID dnid,
  29. const void *const pvDestroyData,
  30. const DWORD dwDestroyDataSize,
  31. const DWORD dwFlags);
  32. extern HRESULT DN_ValidateReturnBuffer(PVOID pInterface,
  33. const DPNHANDLE hBufferHandle,
  34. const DWORD dwFlags);
  35. extern HRESULT DN_ValidateGetPlayerContext(PVOID pInterface,
  36. const DPNID dpnid,
  37. PVOID *const ppvPlayerContext,
  38. const DWORD dwFlags);
  39. extern HRESULT DN_ValidateGetGroupContext(PVOID pInterface,
  40. const DPNID dpnid,
  41. PVOID *const ppvGroupContext,
  42. const DWORD dwFlags);
  43. #ifndef DPNBUILD_NOLOBBY
  44. extern HRESULT DN_ValidateRegisterLobby(PVOID pInterface,
  45. const DPNHANDLE dpnhLobbyConnection,
  46. const IDirectPlay8LobbiedApplication *const pIDP8LobbiedApplication,
  47. const DWORD dwFlags);
  48. #endif // ! DPNBUILD_NOLOBBY
  49. extern HRESULT DN_ValidateTerminateSession(PVOID pInterface,
  50. const void *const pvTerminateData,
  51. const DWORD dwTerminateDataSize,
  52. const DWORD dwFlags);
  53. extern HRESULT DN_ValidateGetHostAddress(PVOID pInterface,
  54. IDirectPlay8Address **const prgpAddress,
  55. DWORD *const pcAddress,
  56. const DWORD dwFlags);
  57. #ifndef DPNBUILD_NOSERVER
  58. extern HRESULT DN_ValidateGetClientAddress(IDirectPlay8Server *pInterface,
  59. const DPNID dpnid,
  60. IDirectPlay8Address **const ppAddress,
  61. const DWORD dwFlags);
  62. extern HRESULT DN_ValidateGetClientInfo(IDirectPlay8Server *pInterface,
  63. const DPNID dpnid,
  64. DPN_PLAYER_INFO *const pdpnPlayerInfo,
  65. DWORD *const pdwSize,
  66. const DWORD dwFlags);
  67. extern HRESULT DN_ValidateSetServerInfo(IDirectPlay8Server *pInterface,
  68. const DPN_PLAYER_INFO *const pdpnPlayerInfo,
  69. PVOID const pvAsyncContext,
  70. DPNHANDLE *const phAsyncHandle,
  71. const DWORD dwFlags);
  72. #endif // DPNBUILD_NOSERVER
  73. extern HRESULT DN_ValidateSetPeerInfo( IDirectPlay8Peer *pInterface,
  74. const DPN_PLAYER_INFO *const pdpnPlayerInfo,
  75. PVOID const pvAsyncContext,
  76. DPNHANDLE *const phAsyncHandle,
  77. const DWORD dwFlags);
  78. extern HRESULT DN_ValidateGetPeerInfo(IDirectPlay8Peer *pInterface,
  79. const DPNID dpnid,
  80. DPN_PLAYER_INFO *const pdpnPlayerInfo,
  81. DWORD *const pdwSize,
  82. const DWORD dwFlags);
  83. extern HRESULT DN_ValidateGetPeerAddress(IDirectPlay8Peer *pInterface,
  84. const DPNID dpnid,
  85. IDirectPlay8Address **const ppAddress,
  86. const DWORD dwFlags);
  87. extern HRESULT DN_ValidateGetServerAddress(IDirectPlay8Client *pInterface,
  88. IDirectPlay8Address **const ppAddress,
  89. const DWORD dwFlags);
  90. extern HRESULT DN_ValidateGetHostSendQueueInfo(IDirectPlay8Client *pInterface,
  91. DWORD *const pdwNumMsgs,
  92. DWORD *const pdwNumBytes,
  93. const DWORD dwFlags );
  94. extern HRESULT DN_ValidateGetServerInfo(IDirectPlay8Client *pInterface,
  95. DPN_PLAYER_INFO *const pdpnPlayerInfo,
  96. DWORD *const pdwSize,
  97. const DWORD dwFlags);
  98. extern HRESULT DN_ValidateSetClientInfo(IDirectPlay8Client *pInterface,
  99. const DPN_PLAYER_INFO *const pdpnPlayerInfo,
  100. const PVOID pvAsyncContext,
  101. DPNHANDLE *const phAsyncHandle,
  102. const DWORD dwFlags);
  103. extern HRESULT DN_ValidateGetConnectionInfoHelper(PVOID pv,
  104. const DPNID dpnid,
  105. DPN_CONNECTION_INFO *const pdpConnectionInfo,
  106. BOOL fServerPlayer,
  107. const DWORD dwFlags);
  108. extern HRESULT DN_ValidateSetCaps(PVOID pv,
  109. const DPN_CAPS *const pdnCaps,
  110. const DWORD dwFlags);
  111. extern HRESULT DN_ValidateGetCaps(PVOID pv,
  112. DPN_CAPS *const pdnCaps,
  113. const DWORD dwFlags);
  114. extern HRESULT DN_ValidateGetSPCaps(PVOID pv,
  115. const GUID * const pguidSP,
  116. DPN_SP_CAPS *const pdnSPCaps,
  117. const DWORD dwFlags);
  118. extern HRESULT DN_ValidateSetSPCaps(PVOID pv,
  119. const GUID * const pguidSP,
  120. const DPN_SP_CAPS *const pdnSPCaps,
  121. const DWORD dwFlags);
  122. extern HRESULT DN_ValidateEnumHosts( PVOID pv,
  123. const DPN_APPLICATION_DESC *const pApplicationDesc,
  124. IDirectPlay8Address *const pAddrHost,
  125. IDirectPlay8Address *const pDeviceInfo,
  126. const VOID* const pUserEnumData,
  127. const DWORD dwUserEnumDataSize,
  128. const DWORD dwRetryCount,
  129. const DWORD dwRetryInterval,
  130. const DWORD dwTimeOut,
  131. PVOID const pvAsyncContext,
  132. DPNHANDLE *const pAsyncHandle,
  133. const DWORD dwFlags );
  134. HRESULT DN_ValidateRemoveClientFromGroup(PVOID pInterface,
  135. const DPNID dpnidGroup,
  136. const DPNID dpnidClient,
  137. PVOID const pvAsyncContext,
  138. DPNHANDLE *const phAsyncHandle,
  139. const DWORD dwFlags);
  140. extern HRESULT DN_ValidateEnumGroupMembers(PVOID pInterface,
  141. const DPNID dpnid,
  142. DPNID *const prgdpnid,
  143. DWORD *const pcdpnid,
  144. const DWORD dwFlags);
  145. extern HRESULT DN_ValidateEnumClientsAndGroups(PVOID pInterface,
  146. DPNID *const prgdpnid,
  147. DWORD *const pcdpnid,
  148. const DWORD dwFlags);
  149. extern HRESULT DN_ValidateGetGroupInfo(PVOID pv,
  150. const DPNID dpnid,
  151. DPN_GROUP_INFO *const pdpnGroupInfo,
  152. DWORD *const pdwSize,
  153. const DWORD dwFlags);
  154. extern HRESULT DN_ValidateSetGroupInfo( PVOID pv,
  155. const DPNID dpnid,
  156. const DPN_GROUP_INFO *const pdpnGroupInfo,
  157. PVOID const pvAsyncContext,
  158. DPNHANDLE *const phAsyncHandle,
  159. const DWORD dwFlags);
  160. extern HRESULT DN_ValidateAddClientToGroup(PVOID pInterface,
  161. const DPNID dpnidGroup,
  162. const DPNID dpnidClient,
  163. PVOID const pvAsyncContext,
  164. DPNHANDLE *const phAsyncHandle,
  165. const DWORD dwFlags);
  166. extern HRESULT DN_ValidateRemoveClientFromGroup(PVOID pInterface,
  167. const DPNID dpnidGroup,
  168. const DPNID dpnidClient,
  169. PVOID const pvAsyncContext,
  170. DPNHANDLE *const phAsyncHandle,
  171. const DWORD dwFlags);
  172. extern HRESULT DN_ValidateDestroyGroup(PVOID pInterface,
  173. const DPNID dpnidGroup,
  174. PVOID const pvAsyncContext,
  175. DPNHANDLE *const phAsyncHandle,
  176. const DWORD dwFlags);
  177. extern HRESULT DN_ValidateCreateGroup(PVOID pInterface,
  178. const DPN_GROUP_INFO *const pdpnGroupInfo,
  179. void *const pvGroupContext,
  180. void *const pvAsyncContext,
  181. DPNHANDLE *const phAsyncHandle,
  182. const DWORD dwFlags);
  183. extern HRESULT DN_ValidateHost( PVOID pInterface, const DPN_APPLICATION_DESC *const pdnAppDesc,
  184. IDirectPlay8Address **const prgpDeviceInfo,const DWORD cDeviceInfo,
  185. const DPN_SECURITY_DESC *const pdnSecurity,
  186. const DPN_SECURITY_CREDENTIALS *const pdnCredentials,
  187. void *const pvPlayerContext, const DWORD dwFlags);
  188. extern HRESULT DN_ValidateEnumServiceProviders( PVOID pInterface,
  189. const GUID *const pguidServiceProvider,
  190. const GUID *const pguidApplication,
  191. DPN_SERVICE_PROVIDER_INFO *const pSPInfoBuffer,
  192. DWORD *const pcbEnumData,
  193. const DWORD *const pcReturned,
  194. const DWORD dwFlags );
  195. extern HRESULT DN_ValidateCancelAsyncOperation(PVOID pvInterface,
  196. const DPNHANDLE hAsyncOp,
  197. const DWORD dwFlags );
  198. extern HRESULT DN_ValidateConnect( PVOID pInterface, const DPN_APPLICATION_DESC *const pdnAppDesc, IDirectPlay8Address *const pHostAddr,
  199. IDirectPlay8Address *const pDeviceInfo, const DPN_SECURITY_DESC *const pdnSecurity,
  200. const DPN_SECURITY_CREDENTIALS *const pdnCredentials, const void *const pvUserConnectData,
  201. const DWORD dwUserConnectDataSize, void *const pvPlayerContext,
  202. void *const pvAsyncContext, DPNHANDLE *const phAsyncHandle, const DWORD dwFlags);
  203. extern HRESULT DN_ValidateGetSendQueueInfo(PVOID pInterface, DWORD *const pdwNumMsgs, DWORD *const pdwNumBytes,const DWORD dwFlags);
  204. extern HRESULT DN_ValidateSetApplicationDesc( PVOID pInterface, const DPN_APPLICATION_DESC *const pdnApplicationDesc, const DWORD dwFlags);
  205. extern HRESULT DN_ValidateGetApplicationDesc( PVOID pInterface, DPN_APPLICATION_DESC *const pAppDescBuffer, DWORD *const pcbDataSize, const DWORD dwFlags );
  206. extern HRESULT DN_ValidateSendParams( PVOID pv, const DPN_BUFFER_DESC *const pBufferDesc, const DWORD cBufferDesc, const DWORD dwTimeOut,void *const pvAsyncContext,DPNHANDLE *const phAsyncHandle,const DWORD dwFlags);
  207. #ifndef DPNBUILD_NOMULTICAST
  208. extern HRESULT DN_ValidateJoin( IDirectPlay8Multicast *pInterface,
  209. IDirectPlay8Address *const pGroupAddr,
  210. IUnknown *const pDeviceInfo,
  211. const DPN_SECURITY_DESC *const pdnSecurity,
  212. const DPN_SECURITY_CREDENTIALS *const pdnCredentials,
  213. void *const pvAsyncContext,
  214. DPNHANDLE *const phAsyncHandle,
  215. const DWORD dwFlags );
  216. extern HRESULT DN_ValidateCreateSenderContext( IDirectPlay8Multicast *pInterface,
  217. IDirectPlay8Address *const pSenderAddress,
  218. void *const pvSenderContext,
  219. const DWORD dwFlags );
  220. extern HRESULT DN_ValidateDestroySenderContext( IDirectPlay8Multicast *pInterface,
  221. IDirectPlay8Address *const pSenderAddress,
  222. const DWORD dwFlags );
  223. extern HRESULT DN_ValidateGetGroupAddress( IDirectPlay8Multicast *pInterface,
  224. IDirectPlay8Address **const ppAddress,
  225. const DWORD dwFlags );
  226. extern HRESULT DN_ValidateEnumMulticastScopes( IDirectPlay8Multicast *pInterface,
  227. const GUID *const pguidServiceProvider,
  228. const GUID *const pguidDevice,
  229. const GUID *const pguidApplication,
  230. DPN_MULTICAST_SCOPE_INFO *const pScopeInfoBuffer,
  231. DWORD *const pcbEnumData,
  232. const DWORD *const pcReturned,
  233. const DWORD dwFlags );
  234. #endif // ! DPNBUILD_NOMULTICAST
  235. extern HRESULT DN_ValidBufferDescs( const DPN_BUFFER_DESC * const pbBufferDesc, const DWORD cBufferCount );
  236. extern HRESULT DN_ValidConnectAppDesc( const DPN_APPLICATION_DESC * const pdnAppDesc );
  237. extern HRESULT DN_ValidHostAppDesc( const DPN_APPLICATION_DESC * const pdnAppDesc );
  238. extern HRESULT DN_ValidPlayerInfo( const DPN_PLAYER_INFO * const pdnPlayerInfo, BOOL fSet);
  239. extern HRESULT DN_ValidGroupInfo( const DPN_GROUP_INFO * const pdnGroupInfo, BOOL fSet );
  240. extern HRESULT DN_ValidSecurityCredentials( const DPN_SECURITY_CREDENTIALS * const pdnCredentials );
  241. extern HRESULT DN_ValidSecurityDesc( const DPN_SECURITY_DESC * const pdnValidSecurityDesc );
  242. extern HRESULT DN_ValidSPCaps( const DPN_SP_CAPS * const pdnSPCaps );
  243. extern HRESULT DN_ValidConnectionInfo( const PDPN_CONNECTION_INFO * const pdnConnectionInfo );
  244. extern HRESULT DN_ValidCaps( const DPN_CAPS * const pdnCaps );
  245. #endif // DPNBUILD_NOPARAMVAL
  246. #endif // __PARAMVAL_H