As illustrated in the following example, a DLL stream handler implements function through an additional entry point. DLL stream handlers must supply an interface to communicate with the Sync/Stream Manager. This interface, called the stream handler command (SHC) interface, exports stream handler commands (SHCs) for use by the Sync/Stream Manager to set up and control data streams. These SHCs are accessible through a single entry point, SHCEntryPoint.
RC ShcRouter(pshc) PSHC_COMMON pshcNow; { /* Start of ShcRouter */ RC rc = NO_ERROR; /* local return code */ switch (pshc->ulFunction) { case SHC_ASSOCIATE: { rc = ShcAssociate((PPARM_ASSOC)pshcNow); break; } case SHC_CREATE: { rc = ShcCreate((PPARM_CREATE)pshcNow); break; } case SHC_DESTROY: { rc = ShcDestroy((PPARM_DESTROY)pshcNow); break; } case SHC_SEEK: { rc = ShcSeek((PPARM_SEEK)pshcNow); break; } case SHC_START: { rc = ShcStart((PPARM_START)pshcNow); break; } case SHC_STOP: { rc = ShcStop((PPARM_STOP)pshcNow); break; } case SHC_GET_PROTOCOL: { rc = ShcGetProtocol((PPARM_GPROT)pshcNow); break; } case SHC_INSTALL_PROTOCOL: { rc = ShcInstallProtocol((PPARM_INSTPROT)pshcNow); break; } case SHC_ENUMERATE_PROTOCOLS: { rc = ShcEnumerateProtocols((PPARM_ENUMPROT)pshcNow); break; } case SHC_NEGOTIATE_RESULT: { rc = ShcNegotiateResult((PPARM_NEGOTIATE)pshcNow); break; } default: { rc = ERROR_INVALID_FUNCTION; break; } } /* endswitch */ return(rc); } /* End of ShcRouter */