6.2 Appendix A.2: Tapsrv.IDL

For ease of implementation, the full IDL is provided below.

 [
     uuid(2F5F6520-CA46-1067-B319-00DD010662DA),
     version(1.0),
 #ifdef __midl
     ms_union,
 #endif // __midl
     pointer_default(unique)
 ]
  
 interface tapsrv
 {
  
 typedef [context_handle] void * PCONTEXT_HANDLE_TYPE;
  
 long
 ClientAttach(
     [out]   PCONTEXT_HANDLE_TYPE *pphContext,
     [in]    long    lProcessID,
     [out]   long   *phAsyncEventsEvent,
     [in, string]    wchar_t *pszDomainUser,
     [in, string]    wchar_t *pszMachine
     );
  
 void
 ClientRequest(
     [in] PCONTEXT_HANDLE_TYPE phContext,
     [in, out, length_is(*plUsedSize), size_is(lNeededSize)]
      unsigned char* pBuffer,
     
     [in]        long    lNeededSize,
     [in, out]   long   *plUsedSize
     );
  
 void
 ClientDetach(
     [in, out]   PCONTEXT_HANDLE_TYPE *pphContext
     );
  
 }