OVH Cloud OVH Cloud

Service système de fichiers

8 réponses
Avatar
O. Thebault
Sur l'API CreateService on peut avoir un paramètre qui indique que le
service est un driver ou un système de fichier.

Ou peut on trouver des informations sur ce genre de service ? un exemple de
source ?

Merci.

8 réponses

Avatar
Pascal.chapuis
"O. Thebault" wrote in message news:<brn114$dua$...
Sur l'API CreateService on peut avoir un paramètre qui indique que le
service est un driver ou un système de fichier.

Ou peut on trouver des informations sur ce genre de service ? un exemple de
source ?

Merci.



pour la doc sur l'API c'est ici :

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dllproc/base/createservice.asp

pour des exemples y'en a plein sur Google.

En voici un en Delphi (bien que le parametre /install suffit en
général comme le précise l'auteur) :
http://groups.google.com/groups?selm?799d62%40newsgroups.borland.com&oe=UTF-8&output=gplain


Pascal exDK-feïné (j'ai enfin un nouveau portable de pauvre...)
Avatar
O. Thebault
Pour un service NT de type Win32, je suis tout à fait d'accord. On trouve
plein d'exemples sur Google.
Par contre, ce qui m'intrigue c'est le paramètre dwServiceType de l'API
CreateService qui peut avoir
comme valeur SERVICE_FILE_SYSTEM_DRIVER ou SERVICE_KERNEL_DRIVER.
Et à ce sujet on trouve beaucoup plus de questions que de réponse précise...

D'après mes quelques souvenirs du DDK, je trouve étrange que Delphi propose
justement ce genre
de service dans la propriété ServiceType de la classe TService pour produire
un fichier de type
exe.....En gros pour précisez ma question quel est la différence entre les
services de type driver et
les drivers tout court (style VxD). (en dehors du fait que l'un est au
format PE et l'autre au format LE)

Si ce type de service existe effectivement, quels sont les API à utiliser
??? (en dehors de CreateService,
SetServiceStatus, etc....)

"Pascal Chapuis" a écrit dans le message de news:

"O. Thebault" wrote in message


news:<brn114$dua$...
> Sur l'API CreateService on peut avoir un paramètre qui indique que le
> service est un driver ou un système de fichier.
>
> Ou peut on trouver des informations sur ce genre de service ? un exemple


de
> source ?
>
> Merci.

pour la doc sur l'API c'est ici :




http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dllproc/bas
e/createservice.asp

pour des exemples y'en a plein sur Google.

En voici un en Delphi (bien que le parametre /install suffit en
général comme le précise l'auteur) :



http://groups.google.com/groups?selm?799d62%40newsgroups.borland.com&oe=UT
F-8&output=gplain


Pascal exDK-feïné (j'ai enfin un nouveau portable de pauvre...)


Avatar
adebaene
"O. Thebault" wrote in message news:<brp2d6$dmo$...

D'après mes quelques souvenirs du DDK, je trouve étrange que Delphi propose
justement ce genre
de service dans la propriété ServiceType de la classe TService pour produire
un fichier de type
exe.....


On ne peut pas faire de drivers avec autre chose que VC.

En gros pour précisez ma question quel est la différence entre les
services de type driver et
les drivers tout court (style VxD). (en dehors du fait que l'un est au
format PE et l'autre au format LE)


Les VxD n'existent (existaient? on peut toujours rêver) que sous
Windows 9x. Sous NT, les drivers sont des images PE "normales", et il
se trouve qu'on peut les installer via la même API que les services
(c'est le SCM qui se charge de choisir quels drivers charger au
démarrage, avant de charger les services).

Au sein des drivers, les systèmes de fichiers sont un cas à part mais
je ne saurais pas t'expliquer techniquement pourquoi (il faut un kit
séparé, l'Installable File System - IFS - pour les développer).


Si ce type de service existe effectivement, quels sont les API à utiliser
??? (en dehors de CreateService,
SetServiceStatus, etc....)


cf le DDK.

Arnaud
Avatar
O. Thebault
> On ne peut pas faire de drivers avec autre chose que VC.



Si sous NT un driver est un service dans un fichier "PE", rien
n'interdit d'en programmer avec Delphi, non ?
Avatar
Pascal.chapuis
"O. Thebault" wrote in message news:<brp2d6$dmo$...
Pour un service NT de type Win32, je suis tout à fait d'accord. On trouve
plein d'exemples sur Google.
Par contre, ce qui m'intrigue c'est le paramètre dwServiceType de l'API
CreateService qui peut avoir
comme valeur SERVICE_FILE_SYSTEM_DRIVER ou SERVICE_KERNEL_DRIVER.
Et à ce sujet on trouve beaucoup plus de questions que de réponse précise...



Ces parametres sont pour des "Windows base services" soit win32. Avec
"CreateService Driver .vxd OR .sys" sur Google il y a quelques
exemples.

D'après mes quelques souvenirs du DDK, je trouve étrange que Delphi propose
justement ce genre
de service dans la propriété ServiceType de la classe TService pour produire
un fichier de type
exe.....



lpServiceStartName :

If the service type is SERVICE_KERNEL_DRIVER or
SERVICE_FILE_SYSTEM_DRIVER, the name is the driver object name that
the system uses to load the device driver. Specify NULL if the driver
is to use a default object name created by the I/O system.

Dans ce cas le service n'est pas un driver mais plutot un pointeur
vers "the driver object name". Il n'y a donc pas de probleme de
structure entre le service (exe) implémenté via la classe TService et
le driver qu'il désigne.

En gros pour précisez ma question quel est la différence entre les
services de type driver et
les drivers tout court (style VxD). (en dehors du fait que l'un est au
format PE et l'autre au format LE)

Si ce type de service existe effectivement, quels sont les API à utiliser
??? (en dehors de CreateService,
SetServiceStatus, etc....)



Pascal

"Veille techno ne veut pas dire Rave Party." (P. Chapuis)
Avatar
O. Thebault
Merci, très interressant....je vais me coucher moins bête ce soir.....

"Pascal Chapuis" a écrit dans le message de news:

"O. Thebault" wrote in message


news:<brp2d6$dmo$...
> Pour un service NT de type Win32, je suis tout à fait d'accord. On


trouve
> plein d'exemples sur Google.
> Par contre, ce qui m'intrigue c'est le paramètre dwServiceType de l'API
> CreateService qui peut avoir
> comme valeur SERVICE_FILE_SYSTEM_DRIVER ou SERVICE_KERNEL_DRIVER.
> Et à ce sujet on trouve beaucoup plus de questions que de réponse


précise...

Ces parametres sont pour des "Windows base services" soit win32. Avec
"CreateService Driver .vxd OR .sys" sur Google il y a quelques
exemples.

> D'après mes quelques souvenirs du DDK, je trouve étrange que Delphi


propose
> justement ce genre
> de service dans la propriété ServiceType de la classe TService pour


produire
> un fichier de type
> exe.....

lpServiceStartName :

If the service type is SERVICE_KERNEL_DRIVER or
SERVICE_FILE_SYSTEM_DRIVER, the name is the driver object name that
the system uses to load the device driver. Specify NULL if the driver
is to use a default object name created by the I/O system.

Dans ce cas le service n'est pas un driver mais plutot un pointeur
vers "the driver object name". Il n'y a donc pas de probleme de
structure entre le service (exe) implémenté via la classe TService et
le driver qu'il désigne.

>En gros pour précisez ma question quel est la différence entre les
> services de type driver et
> les drivers tout court (style VxD). (en dehors du fait que l'un est au
> format PE et l'autre au format LE)
>
> Si ce type de service existe effectivement, quels sont les API à


utiliser
> ??? (en dehors de CreateService,
> SetServiceStatus, etc....)

Pascal

"Veille techno ne veut pas dire Rave Party." (P. Chapuis)


Avatar
Arnaud Debaene
O. Thebault wrote:
On ne peut pas faire de drivers avec autre chose que VC.



Si sous NT un driver est un service dans un fichier "PE", rien
n'interdit d'en programmer avec Delphi, non ?



Non, car en mode noyau, tu ne disposes pas des runtimes de tous les langages
de haut-niveau.
Par ailleurs, pour écrire un driver il faut être capable de manipuler un
certain nombre d'éléments (placer ds fonctions en mémoires "pageable" ou
pas, gérer les structured exception handling, ....) qui sont de spécificités
MS et ne sont à priori disponibles qu'avec VC.

Arnaud
Avatar
Gils Gayraud
> Si sous NT un driver est un service



Bon on va dire que ce n'est pas vrai. :-)
Un service sous NT n'est qu'un excutable qui s'execute
en mode User (ring 3) mais sans pouvoir avoir le droit
de s'exprimer a travers un ecran console ou fenetre
Windows.

Mainenant on peut lancer un driver de la même maniere
qu'une service enligne de commande a l'aide de net start
et c'est une driver et non pas un service.

La principale différence entre un service et un driver, le
service s'excute en mode applicatif et ne peut pas acceder
directement au materiel contrairement au driver qui s'execute
en mode kernel et qui grace a cela a les droit d'acceder au
materiel quand celui-ci est libre d'accès et pas verouiller
par un autre driver precedemment lancer.

Maintenant si je peix me permettre on peut developper du
driver ou du service dans n'importe quel langage, a deux
conditions, que ce langage sache generer du code machine
comprehensible par l'OS soit en ring 3 soit en ring 0, mode
user ou mode kernel, et la deuxieme condition d'avoir le
wrapper pour faire l'association entre le langage et les
routines documentées dans le DDK pour attaquer le Kernel
de NT a 2003.

Ces wrappers existent et sont souvent disponible chez
des societes ou partenaires de MS tiers partie.

Les wrappers pour le C/C++ de MS sont realisé pas
MS mais Watcom avec sont C/C++ ont aussi developpé
des wrappers.

Pour Delphi, je ne sais pas si cela existe mais cela ne
m'étonnerait pas. Il faut peut-être posé la question du
coté des developpeurs de Indy groupe très serieux et
competent du coté developpement noyau.

--
Cordialement
GG.