Avatar billede bohbs Nybegynder
25. september 2003 - 12:06 Der er 6 kommentarer og
2 løsninger

Tilgang til c fil ( kald af funktioner i c fil )

Jeg er ved at lave et projekt som SKAL laves i C#, der gør brug af porttalk.sys for at tale til parallel porten. Til den egentlige kommunikation følger der noget letbrugbart c kode, og det er disse funktioner jeg gerne til kalde fra min C# kode. Hvordan får jeg adgang til de c funktioner?
Avatar billede burningice Nybegynder
25. september 2003 - 12:09 #1
[DllImport("porttalk.sys")]
public static [returntype] [funktionsnavn]([parametre]);
Avatar billede bohbs Nybegynder
25. september 2003 - 12:17 #2
har du tidligere arbejdet med porttalk? så vidt jeg forstår af http://www.beyondlogic.org/porttalk/porttalk.htm (bunden) skal "pt_ioctl.c" bruges for at få adgang til de simple funktioner:

Talking to the Device Driver - User Mode APIs

PortTalk also has IOCTLs to allow reading and writing to I/O Ports. In this case, your usermode program would open the PortTalk device driver and pass data to the driver through IOCTL calls. The driver then talks to the I/O port(s) in ring 0.

The Porttalk driver contains two IOCTL calls to read from and write to I/O Ports. A c source file, pt_iotcl.c can be used to provide easy support based on the popular inportb/outportb and inp/outp calls supported in earlier programming environments. By simply including pt_ioctl.c and calling OpenPortTalk when you program starts and ClosePortTalk when your program finishes you can have the functionality of the inportb/outportb and inp/outp calls.

#include
#include
#include

void __cdecl main(void)
{
    unsigned char value;
    printf("IoExample for PortTalk V2.0\nCopyright 2001 Craig Peacock\nhttp://www.beyondlogic.org\n");
    OpenPortTalk();
    outportb(0x378, 0xFF);
    value = inportb(0x378);
    printf("Value returned = 0x%02X \n",value);
    outp(0x378, 0xAA);
    value = inp(0x378);
    printf("Value returned = 0x%02X \n",value);
    ClosePortTalk();
}
Avatar billede burningice Nybegynder
25. september 2003 - 12:24 #3
nej... det har jeg ikke. Jeg skrev bare hvilken syntaks man skal bruge for at få fat i funktioner der ligger i unmanaged kode :)
Avatar billede bohbs Nybegynder
25. september 2003 - 14:40 #4
og kan DllImport hente "pt_ioctl.c" altså en "C" fil, eller er det kun dll's og sys filer? Hvor skal de i så fald være placeret?
Avatar billede burningice Nybegynder
25. september 2003 - 15:46 #5
æh... nej... en .c fil skal jo kompileres... ligesom .cs, .vb og lign. filer skal.

Ang. hvor de skal ligge, så vil jeg tro at at den skal ligge i en mappe der står i PATH-variablen eller den mappe som programmet som skal bruge den ligger i.
Avatar billede bohbs Nybegynder
29. september 2003 - 17:41 #6
tak for hjælpen cyberfessor, fandt noget lign. som lå mere til for mig...:
http://www.dotnet-magazin.de/itr/online_artikel/psecom,id,397,nodeid,31.html
Avatar billede bohbs Nybegynder
29. september 2003 - 17:41 #7
hov gider du ikke lige smide et svar så kan vi dele point...
Avatar billede burningice Nybegynder
27. oktober 2003 - 14:54 #8
jo, selvfølgelig :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester