To register a custom channel, register a new port supplier with a pkgdef file /// like the following: ///
///
/// [$RootKey$\AD7Metrics\PortSupplier\{E0904AA8-2C57-4A53-B4C3-B70CE0A004E4}]
/// ; NOTE: To use a localized string for 'Name' or 'Description' you can use the
/// ; following syntax:
/// ; "resource=(path-to-root-directory)\*\(native-resource-dll-name)#(resource-id)"
/// "Name"="My Example Transport"
/// "Description"="This string shows up in the attach to process dialog"
/// "CustomMsvsmonChannelFactory"="{38E3ABE8-8062-4C1C-95EE-BC9C361E0D46}"
///
/// [$RootKey$\CLSID\{38E3ABE8-8062-4C1C-95EE-BC9C361E0D46}]
/// ; NOTE: This is the keys needed to register a transport implemented in native code.
/// ; Search for examples in other Visual Studio .pkgdef files for a managed example
/// "InprocServer32"="$PackageFolder$\MyTransport.dll"
/// "ThreadingModel"="Apartment"
///
/// ; Any appropriate debug engine also needs to be registered as supporting this port
/// ; supplier. Here is an example of registering the native debug engine
/// ; ({3B476D35-A401-11D2-AAD4-00C04F990171}):
/// [$RootKey$\AD7Metrics\Engine\{3B476D35-A401-11D2-AAD4-00C04F990171}\PortSupplier]
/// "My Company.My Product"="{E0904AA8-2C57-4A53-B4C3-B70CE0A004E4}"
///
/// /// Note that IAsyncDebugEngineOperation.BeginExecute will be called before the debugger /// puts up any wait UI, so if an implementation wants to put up its own custom wait UI, /// it should do so before BeginExecute returns. ///
///