Greetings my dear friend,
Let's say I wanted to write an application that talks directly to a
network card. For example, say I'm designing a firewall or packet sniffer.
Do I need to use unmanaged code to do this? I'm wondering how I should
arrange the "division of labor" between managed and unmanaged code.
Let's make the example even simpler by saying that I want to design a
form with a button on it. When the button is clicked, I want to send a
packet out the ethernet card. The packet needs to be sent by talking
directly to the Ethernet card drivers, not via a standard interface like
Winsock [yes, I know that there's no practical reason to design such an
application -- it's just an example]..
So my goal is to make all of my code "managed" except what absolutely
MUST be unmanaged. So the form would be designed in C# -- as would be the
handler for the button... but when the button is clicked, I'll need to talk
to a network driver. So at that point, I'll need to use unmanaged C++ (??).
How would I handle this? As far as I know, I can't mix managed C# and
unmanaged C++ in the same assembly (can I?)... Would I design a totally
separate C++ DLL which exposes a SendPacket() method?
I'm not asking for any specific code, just general *concepts* that I can
research further in the online help, books, etc. I'm just not sure where to
begin.
I.P. Freely 4 2213
Hey IP !
"I.P. Freely" <ye*********@barnyard.glum> wrote in message
news:%2****************@TK2MSFTNGP09.phx.gbl... So my goal is to make all of my code "managed" except what absolutely MUST be unmanaged. So the form would be designed in C# -- as would be the handler for the button... but when the button is clicked, I'll need to
talk to a network driver. So at that point, I'll need to use unmanaged C++
(??).
Yes, and no.
You can call into existing Win32 APIs (and pretty much any DLL) via
p/Invoke.
You don't have to author those DLLs in unmanaged C++. They could have been
authored in "anything".
How would I handle this? As far as I know, I can't mix managed C# and unmanaged C++ in the same assembly (can I?)...
No, not with the current .NET Framework.
Would I design a totally separate C++ DLL which exposes a SendPacket() method?
Yes, why not? and then the DLL needs to be on the path. It need not be
written in VC7.0 or VC7.1 ("unmanaged C++"). You could write it in VC6 or
something else.
I'm not asking for any specific code, just general *concepts* that I
can research further in the online help, books, etc. I'm just not sure where
to begin.
I.P. Freely
> Let's say I wanted to write an application that talks directly to a network card. For example, say I'm designing a firewall or packet sniffer. Do I need to use unmanaged code to do this? I'm wondering how I should arrange the "division of labor" between managed and unmanaged code.
As far as I know, only device drivers can access hardware directly on the
modern OS.
Only on Win95, Win98 and WinMe, you could access the hardware directly.
So you will have to create a unmanaged network driver in your example that
does what you want and then you can use managed/unmanaged programs that
connects to this custom driver and executes the things you want.
> So you will have to create a unmanaged network driver in your example that does what you want and then you can use managed/unmanaged programs that connects to this custom driver and executes the things you want.
So if a pre-existing driver exposes the functionality that I need, I
could talk to that driver from managed code? For example, I could build an
IP packet in C# and send it out the Ethernet card by talking to the network
driver directly? Is a driver just a DLL that can be called using the
P/Invoke method that Dino mentioned?
> Let's make the example even simpler by saying that I want to design a form with a button on it. When the button is clicked, I want to send a packet out the ethernet card. The packet needs to be sent by talking directly to the Ethernet card drivers, not via a standard interface like Winsock [yes, I know that there's no practical reason to design such an application -- it's just an example]..
....no, there isn't. If you wait till a situation when you actually need to
do that
comes along, you may soon get the impression that one will never exist.
So my goal is to make all of my code "managed" except what absolutely MUST be unmanaged. So the form would be designed in C# -- as would be the handler for the button... but when the button is clicked, I'll need to
talk to a network driver. So at that point, I'll need to use unmanaged C++
(??). How would I handle this? As far as I know, I can't mix managed C# and unmanaged C++ in the same assembly (can I?)... Would I design a totally separate C++ DLL which exposes a SendPacket() method?
Yes. This is the most direct way to call C++ code directly from C#. The only
other way is COM, which involves more overhead. I'm not asking for any specific code, just general *concepts* that I
can research further in the online help, books, etc. I'm just not sure where
to begin.
Think about what you *actually* want to do? This thread has been closed and replies have been disabled. Please start a new discussion. Similar topics
by: BigDaDDY |
last post by:
Um yeah....In case you haven't figured it out, Microsoft sucks. I'm going
to be kicked back in my chair eating popcorn and watching football 10 years
from now, while all you clowns are scrambling...
|
by: agnivesh |
last post by:
Hi there,
I'm a beginner in C programming and want to learn how to write C (pure
C) code to access hardware ports (serial,parallel,usb etc.) under
windows environment ?
1. Please, suggest any...
|
by: I.P. Freely |
last post by:
Greetings my dear friend,
Let's say I wanted to write an application that talks directly to a
network card. For example, say I'm designing a firewall or packet sniffer.
Do I need to use...
|
by: Sarah |
last post by:
I need to access some data on a server. I can access it directly using UNC
(i.e. \\ComputerName\ShareName\Path\FileName) or using a mapped network
drive resource (S:\Path\FileName).
Here is my...
|
by: david.brown.0 |
last post by:
I'm trying to make a Java program access a parallel port. Java's comm
API does not provide me with the control I need. I need to be able to
write to the data and control pins and read the status...
|
by: Flic |
last post by:
Is this possible?
I know about a bit about ODBC and found how to import an ODBC database
stored on the computer, however I am after accessing an SQL database
stored on a webserver. I'd like to...
|
by: alf |
last post by:
Hi,
is it possible that due to OS crash or mysql itself crash or some e.g.
SCSI failure to lose all the data stored in the table (let's say million
of 1KB rows). In other words what is the worst...
|
by: =?Utf-8?B?Q2hyaXN0aWFuIEhhdmVs?= |
last post by:
Hi,
how can I access the RS-232 hardware interface using C# and .NET2.0 to send
and receive messages to a hardware component?
Christian
|
by: Les Desser |
last post by:
In article
<fcebdacd-2bd8-4d07-93a8-8b69d3452f3e@s50g2000hsb.googlegroups.com>, The
Frog <Mr.Frog.to.you@googlemail.comMon, 14 Apr 2008 00:45:10 writes
Thank you for that. It was very...
|
by: DolphinDB |
last post by:
Tired of spending countless mintues downsampling your data? Look no further!
In this article, you’ll learn how to efficiently downsample 6.48 billion high-frequency records to 61 million...
|
by: isladogs |
last post by:
The next Access Europe meeting will be on Wednesday 6 Mar 2024 starting at 18:00 UK time (6PM UTC) and finishing at about 19:15 (7.15PM).
In this month's session, we are pleased to welcome back...
|
by: isladogs |
last post by:
The next Access Europe meeting will be on Wednesday 6 Mar 2024 starting at 18:00 UK time (6PM UTC) and finishing at about 19:15 (7.15PM).
In this month's session, we are pleased to welcome back...
|
by: Vimpel783 |
last post by:
Hello!
Guys, I found this code on the Internet, but I need to modify it a little. It works well, the problem is this: Data is sent from only one cell, in this case B5, but it is necessary that data...
|
by: ArrayDB |
last post by:
The error message I've encountered is; ERROR:root:Error generating model response: exception: access violation writing 0x0000000000005140, which seems to be indicative of an access violation...
|
by: Defcon1945 |
last post by:
I'm trying to learn Python using Pycharm but import shutil doesn't work
|
by: af34tf |
last post by:
Hi Guys, I have a domain whose name is BytesLimited.com, and I want to sell it. Does anyone know about platforms that allow me to list my domain in auction for free. Thank you
|
by: Faith0G |
last post by:
I am starting a new it consulting business and it's been a while since I setup a new website. Is wordpress still the best web based software for hosting a 5 page website? The webpages will be...
|
by: isladogs |
last post by:
The next Access Europe User Group meeting will be on Wednesday 3 Apr 2024 starting at 18:00 UK time (6PM UTC+1) and finishing by 19:30 (7.30PM).
In this session, we are pleased to welcome former...
| |