In pervasive computing environments, mobile devices communicate via wireless links without requiring any fixed infrastructure. These devices must be able to discover and share services dynamically. In this paper, we propose a new service discovery middleware specifically designed for this kind of environments. This middleware is composed of a service discovery protocol, Pervasive Discovery Protocol (PDP), and a service description language, Generic Service Description Language (GSDL). PDP is a fully distributed protocol that merges characteristics of both pull and push solutions; it reduces power consumption of the most limited devices. GSDL is an XML based markup language that uses a hierarchical service description designed taking into account the specific requirements of pervasive environments.