How to apply diffuse, glossy or glass material to smoke in cycles without using volume materials?
This is not supported atm, it would require converting the smoke simulation to a mesh or some other structure (an SDF maybe). The smoke simulator can only feed Cycles 3d texture data, thus can only be represented as a volume.
Note that if you have access to Houdini or another tool with OpenVDB, you should be able to read Cycles OpenVDB smoke cache (new in 2.77), create a mesh from the cache, and export that back to Blender. But using Blender alone it is not possible to generate the correct data to use smoke sim ouput as a surface.