[This is preliminary documentation and subject to change.]
Hardware vendors should implement the virtual interface functions described in this section. These functions package data from a stream into a specific format, so a particular broadcast encoder can transmit the data stream over a particular network.
Hardware vendors should build their virtual interfaces as dynamic-link libraries (DLLs) that the MMR loads at run time. A virtual interface DLL must implement all the functions listed following that are specified as required. Only virtual interface DLLs that support dynamic configuration must implement the functions listed following that are specified as optional. A virtual interface DLL that supports dynamic configuration enables the MMR to query or set any number of values defined by the virtual interface. Implementation of dynamic configuration is strongly encouraged.
Each virtual interface must be able to safely host multiple instances of an output system. In other words, the MMR should be able to load a virtual interface more than once with separate parameters and route different packet streams to such different instances of a virtual interface. The MMR should be able to independently start and stop each instance of a virtual interface; that is, the MMR should be able to load and unload a driver instance from the MMR's address space.
At run time, the MMR loads the appropriate virtual interface DLL with an output loader. The output loader calls the RegQueryValueEx function, which is part of the Microsoft® Win32® application programming interface (API). The output loader passes RegQueryValueEx the string OutputDLL to retrieve the file name of the virtual interface DLL. The output loader then calls the LoadLibrary Win32 function and passes this file name to retrieve a handle to the output DLL. The output loader uses this handle in calls to the GetProcAddress Win32 function. These calls get the address of each exported function of the virtual interface DLL. To locate documentation on these Win32 API functions that the output loader calls, see Further Server Information.
The following table lists and describes the virtual interface functions.
Function | Description |
---|---|
msbdnOutputCreate | Creates and initializes a single instance of a virtual interface. This function is required. |
msbdnOutputDestroy | Destroys an instance of a virtual interface. This function is required. |
msbdnOutputFreeBuffer | Frees a buffer returned by msbdnOutputGetValue. This function is optional. |
msbdnOutputGetStatus | Retrieves the status of a virtual interface. This function is required. |
msbdnOutputGetValue | Retrieves a configuration value of a virtual interface. This function is optional. |
msbdnOutputGetValueCount | Retrieves the number of configuration values supported by a virtual interface. This function is optional. |
msbdnOutputSendPacket | Sends all packets of a data stream to the output system. This function is required. |
msbdnOutputSetValue | Assigns a configuration value to a virtual interface. This function is optional. |