Domanda

Ho sempre impostato il mio driver ImagePath direttamente (C: \ Windows \ System32 \ drivers \ Abc.sys).

Ma ho appena saputo molti driver di periferica impostare la loro ImagePath a % SystemRoot% \ system32 \ svchost.exe -k netsvcs
entrare descrizione dell'immagine qui
Si tratta di hive del Registro di Lanmanworkstation conducente.
Credo file immagine di Lanmanworkstation conducente è Mrxsmb.sys
Ma non hanno messo 'System32 \ drivers \ Mrxsmb.sys'. Perché.

Che cosa significa svchost.exe -k netsvcs media?
Anche se non v'è certo percorso, funzione StartService funziona bene.
Come funziona Service Manager (? Non sono sicuro) trovare il percorso dell'immagine del conducente?

C'è un vantaggio di utilizzare questo?
Che cosa succede se decido di usare in questo modo, ci sono i miei codici di driver dovrebbero modificare?

È stato utile?

Soluzione

Si sta confondendo tra i driver di periferica ei servizi.
svchost.exe è utilizzato per condividere lo stesso processo tra più servizi. L'implementazione è interno a Windows in modo da utilizzare al di fuori di Windows non è supportato.

Se si scrive un driver di periferica (per l'hardware, o un driver di filtro) o non funzionano per Microsoft, non è possibile utilizzare svchost.

La ragione per la confusione è perché lo stile vecchio (NT4), i driver non plug-and-play può essere avviato utilizzando le API di controllo Service Manager.

Altri suggerimenti

svchost è un processo host per altri servizi, contenuti nella DLL. La parte dopo il "k" indica il gruppo di servizi. È possibile trovare il percorso del servizio DLL nel HKLM\System\CurrentControlSet\Services\LanmanWorkstation\Parameters nel valore ServiceDll. Sto indovinando la ragione inizia ancora correttamente se si rimuove il percorso dell'immagine è perché il tipo di servizio è impostato su SERVICE_WIN32_SHARE_PROCESS, e lo SCM probabilmente ignora il percorso dell'immagine (non sono sicuro di questo).

svchost.exe è un servizio "multi-purpose". Esso incorpora più servizi in un unico file exe, ognuno dei quali può essere separatamente gestite tramite per esempio console di gestione dei servizi. I parametri per svchost.exe afferma il "subfornitore" all'interno del file exe.

Come StartService () non è un messaggio di controllo al servizio stesso, ma invece solo la richiesta di avviare un certo eseguibile (che a sua volta deve "sapere" che si tratta di un servizio (e il servizio wich) e sarà quindi registrare con controllo del servizio manager), le finestre semplicemente eseguire il binario che punti a ImagePath.

In questo caso (LanManWorkstation) questo binario è svchost.exe, il parametro dato è -k netsvc. In questo modo il know svchost.exe che dei molti servizio che fornisce deve essere avviato.

Come al solito, il binario non ha bisogno di contenere tutte le funzioni in sé, ma può anche caricare librerie aggiuntive. mrxsmb.sys potrebbe essere una tale libreria, anche se non sono sicuro di questo punto.

Quindi questa risposta è più di un "come funziona in generale" di un "sì, NETSVC e Mrxsmb.sys sono LanManWorkstation".

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top