[C#] Functies uit een .sys gebruiken (driver ontwikkeling)

Pagina: 1
Acties:

  • FvH
  • Registratie: Oktober 2001
  • Laatst online: 09-04 15:06

FvH

Aan het typen...

Topicstarter
Ik wil een NDIS driver schrijven en heb een .sys van mijn opdrachtgever gekregen. Nu zou ik alleen niet weten hoe ik die .sys zou moeten kunnen gebruiken in C#.

Ik heb ook een .lib, maar als ik die aan m'n compiler meegeef klaagt hij over alle functienamen. Aangezien (voor zover ik dat kan zien) allemaal met een _ beginnen.

Iemand een idee hoe dit moet??

What are clouds made of? Linux servers mostly!


  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
Ik zou niet weten hoe je een .sys aan zou moeten roepen. Maar het lijkt me sterk dat hij klaagt dat er functienamen met een _ beginnen want dat mag gewoon in C# ieder geval. Maar hoe wil jij je .lib meelinken met een C# project? Ik zou ieder geval niet weten hoe dat moet.

“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”


  • H!GHGuY
  • Registratie: December 2002
  • Niet online

H!GHGuY

Try and take over the world...

rwb schreef op dinsdag 23 augustus 2005 @ 16:40:
Ik zou niet weten hoe je een .sys aan zou moeten roepen. Maar het lijkt me sterk dat hij klaagt dat er functienamen met een _ beginnen want dat mag gewoon in C# ieder geval. Maar hoe wil jij je .lib meelinken met een C# project? Ik zou ieder geval niet weten hoe dat moet.
als dit niet werkt (zoals rwb aangeeft) dan kun je in C++ even een wrapper schrijven en die in een DLL stoppen.

ASSUME makes an ASS out of U and ME


  • MSalters
  • Registratie: Juni 2001
  • Laatst online: 09-04 22:08
C#? Voor de CLR? Is een NDIS driver geen kernel mode? De CLR is user-mode, en het lijkt me onwenselijk (om het voorzichtig uit te drukken) om voor elke call en een kernel/user mode switch en een native/CLR switch te hebben. Uit m'n hoofd is het Microsoft advies "C, of C++ als je weet wat je aan het doen bent".

Man hopes. Genius creates. Ralph Waldo Emerson
Never worry about theory as long as the machinery does what it's supposed to do. R. A. Heinlein


  • FvH
  • Registratie: Oktober 2001
  • Laatst online: 09-04 15:06

FvH

Aan het typen...

Topicstarter
aah.. damn zeg... ik ben er ook lekker bij. Helemaal gelijk dat ndis kernel mode is. Dat is het zeker.

Dus dat wordt een andere oplossing bedenken. Voor even iets anders: hierboven zeggen jullie dat je van een lib een dll kan maken. Hoe??

Ik heb wel wat dingen op het internet gevonden, maar niets concreets.

What are clouds made of? Linux servers mostly!


  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
Ik weet niet precies hoe dat werkt want doe eigenlijk nooit iets met Lib's maar je kan in C++ toch gewoon een .lib meelinken. Dan kan je in je dll gewoon de functies van je .Lib aanroepen. Dan kan je er dus een wrapper dll van maken.

[ Voor 3% gewijzigd door Woy op 24-08-2005 11:11 ]

“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”


  • MSalters
  • Registratie: Juni 2001
  • Laatst online: 09-04 22:08
Je kunt weliswaar een .lib meelinken, maar de resulterende DLL die je dan krijgt kun je niet in kernel mode uitvoeren. Het resultaat is dus een onbuikbare DLL.

NDIS development moet denk ik gewoon met de DDK. Overigens ga ik er van uit dat je ook een .h bij die .lib hebt?

Man hopes. Genius creates. Ralph Waldo Emerson
Never worry about theory as long as the machinery does what it's supposed to do. R. A. Heinlein


  • farlane
  • Registratie: Maart 2000
  • Laatst online: 23:08
Drivers test je iha met een testsysteem dat windows in debug mode draait. Je kunt dan via de seriele poort de debugger aan dit testsysteem hangen. ( Met deze debugger kun je breakpoints zetten in de source van je driver, die dan dus ook de kernel van je testsysteem stopzet ! ) Ook kun je de logmessages vanuit je driver opvangen met die debugger.

Wat je wel zou kunnen doen met een kernel driver is een interface maken die dmv deviceioctl's bepaalde functies aanroept. Om die ioctls te sturen moet je vanuit je user code een handle openen naar het device ( die maak je aan vanuit de driver, voor de floppy driver is dat bv "\\.\a:" ). Die handle kun je dan gebruiken om prut heen en weer te sturen.


NB Als je vanuit .Net/C# drivers wilt gaan testen / debuggen / interfacen weet je duidelijk absoluut niet waar je mee bezig bent.

Somniferous whisperings of scarlet fields. Sleep calling me and in my dreams i wander. My reality is abandoned (I traverse afar). Not a care if I never everwake.


  • FvH
  • Registratie: Oktober 2001
  • Laatst online: 09-04 15:06

FvH

Aan het typen...

Topicstarter
Waar ik mee bezig ben is een virtual network device driver. Het is wel degelijk in C# mogelijk. Heb er namelijk al klaar. Ik heb alleen gigantische problemen met ndis en ben daarom maar terug gestapt naar C++ voor dit.

En ja, ik heb de .h en .lib, ik heb de DDK maar ndis werkt niet mee.

What are clouds made of? Linux servers mostly!


  • farlane
  • Registratie: Maart 2000
  • Laatst online: 23:08
FvH schreef op woensdag 24 augustus 2005 @ 16:26:
Waar ik mee bezig ben is een virtual network device driver.
Dan snap ik niet waar je mee bezig bent. :)

Wat is een "Virtual Network Device Driver" ?
Heb je nu een kernel mode driver geschreven in C# ?

Als je bijvoorbeeld het plaatje op deze pagina bekijkt: http://www.rawether.net/product/tour01.htm welk gedeelte heb je in C# al klaar?

[ Voor 20% gewijzigd door farlane op 24-08-2005 17:09 ]

Somniferous whisperings of scarlet fields. Sleep calling me and in my dreams i wander. My reality is abandoned (I traverse afar). Not a care if I never everwake.


  • FvH
  • Registratie: Oktober 2001
  • Laatst online: 09-04 15:06

FvH

Aan het typen...

Topicstarter
in dat plaatje is wat ik klaar heb "NDIS PROTOCOL DRIVER". Waar ik nu gigantische problemen mee heb is de OS-Specific NDIS Lib.

Communicatie tussen user mode win32app en NDIS protocol driver gaan volgens unit testing ok.

What are clouds made of? Linux servers mostly!

Pagina: 1