What's marshalling? I've had to use it extensively for a project but I don't
know what it means. I tried to look for a definition in the Internet but I
couldn't find anything that would explain what it is.
Is converting a C-style struct to a C# class (or struct) marshalling? And
what about the function exports? Are those Marshalling too?
Thanks for your help and thanks for helping me with the Dll exports (the
several messages I posted in NG). Everything worked great.
My last step is to convert some C-structs (with embedded structs and members
of type struct) into classes. But I won't be working on that yet. 5 96496
Marshaling is the act of taking data from the environment you are in and
exporting it to another environment. In the context of .NET, marhsaling
refers to moving data outside of the app-domain you are in, somewhere else.
When you work with unmanaged code, you are marshaling data from your
managed app-domain to the unmanaged realm. Also, when transferring data
between app-domains (to another application, on the same or another
machine), you are also marshaling data from your app-domain, to another
app-domain.
Hope this helps.
--
- Nicholas Paldino [.NET/C# MVP]
- mv*@spam.guard. caspershouse.co m
"VM" <vm@none.com> wrote in message
news:Oo******** ******@TK2MSFTN GP11.phx.gbl... What's marshalling? I've had to use it extensively for a project but I
don't know what it means. I tried to look for a definition in the Internet but I couldn't find anything that would explain what it is. Is converting a C-style struct to a C# class (or struct) marshalling? And what about the function exports? Are those Marshalling too?
Thanks for your help and thanks for helping me with the Dll exports (the several messages I posted in NG). Everything worked great.
My last step is to convert some C-structs (with embedded structs and
members of type struct) into classes. But I won't be working on that yet.
Thanks. So is recreating the structs into C#-readable structs (class or
struct) marshalling?
And what's unamanaged code? I've heard that code with pointers is unmanaged
code, or C code is unmanaged code. But why is a class managed code (if that
statement is true) hile other code is unmanaged?
"Nicholas Paldino [.NET/C# MVP]" <mv*@spam.guard .caspershouse.c om> wrote in
message news:#h******** ******@TK2MSFTN GP09.phx.gbl... Marshaling is the act of taking data from the environment you are in
and exporting it to another environment. In the context of .NET, marhsaling refers to moving data outside of the app-domain you are in, somewhere
else. When you work with unmanaged code, you are marshaling data from your managed app-domain to the unmanaged realm. Also, when transferring data between app-domains (to another application, on the same or another machine), you are also marshaling data from your app-domain, to another app-domain.
Hope this helps.
-- - Nicholas Paldino [.NET/C# MVP] - mv*@spam.guard. caspershouse.co m
"VM" <vm@none.com> wrote in message news:Oo******** ******@TK2MSFTN GP11.phx.gbl... What's marshalling? I've had to use it extensively for a project but I don't know what it means. I tried to look for a definition in the Internet but
I couldn't find anything that would explain what it is. Is converting a C-style struct to a C# class (or struct) marshalling?
And what about the function exports? Are those Marshalling too?
Thanks for your help and thanks for helping me with the Dll exports (the several messages I posted in NG). Everything worked great.
My last step is to convert some C-structs (with embedded structs and members of type struct) into classes. But I won't be working on that yet.
> Thanks. So is recreating the structs into C#-readable structs (class or struct) marshalling?
Yes, it's one form of marshaling. As people said, marshaling is serializing
or transforming types over the wire or some boundary. COM had marshaling
when you went out of one apartment into a non-compatible apartment or across
the wire to another machine. When dealing with COM Interop, .NET uses
Interop Marshaling between COM data types and .NET CLR types. And what's unmanaged code? I've heard that code with pointers is unmanaged code, or C code is unmanaged code. But why is a class managed code (if that statement is true) hile other code is unmanaged?
Unmanaged code is simply all code pre .NET. It is all code NOT compiled to
operate under .NET's runtime, the CLR. Unmanaged code is code compiled and
linked natively and has no knowledge of the CLR. Unmanaged code can be
native C++ with pointers, or C, or VB 6, or Delphi, etc. It is everything
not managed by the CLR. In the CLR, code is compiled into IL + metadata into
assemblies and then those assemblies are JITed into assembly language
instructions while called. It is the metadata throughout that allows managed
code to be managed, managed by the CLR. The CLR can control the type
definitions and boundaries (enforce CTS type definitions), control memory
through automatic management of data via the garbage collector, and provide
CAS security among other benefits. So a class is managed code IF compiled
with a .NET compiler and controlled by the CLR whereas "other code is
unmanaged" because it is compiled without a .NET compiler and uses the
unmanaged heap for memory and knows nothing of the CLR.
This is the answer to your question but I can go deeper if you want.
Essentially, both systems produce a Windows PE format file in the form of a
DLL or EXE. The huge difference is that in .NET, that PE file is called an
assembly and has different header. It also contains IL + metadata. All .NET
compilers are REQUIRED to emit IL + metadata. The metadata fully describes
all types in terms of CTS types. The metadata allows managed code to be
called "self-describing." When that assembly is loaded, and the types used,
the CLR JIT's the IL for the called method and replaces that section of IL
with the native assembly language. The IL is *never* interpreted but
provides a common platform-independent, language-independent standard form.
Because of all this, the CLR can manage the types and provide it's services.
--
-----
Sam Gentile
Microsoft MVP - C#/.NET
..NET Blog http://samgentile.com/blog/
Please do NOT contact me directly but respond to
the newsgroup instead.
---------
"VM" <vm@none.com> wrote in message
news:%2******** ********@TK2MSF TNGP09.phx.gbl. .. Thanks. So is recreating the structs into C#-readable structs (class or struct) marshalling?
And what's unamanaged code? I've heard that code with pointers is unmanaged code, or C code is unmanaged code. But why is a class managed code (if that statement is true) hile other code is unmanaged?
"Nicholas Paldino [.NET/C# MVP]" <mv*@spam.guard .caspershouse.c om> wrote in message news:#h******** ******@TK2MSFTN GP09.phx.gbl... Marshaling is the act of taking data from the environment you are in and exporting it to another environment. In the context of .NET, marhsaling refers to moving data outside of the app-domain you are in, somewhere else. When you work with unmanaged code, you are marshaling data from your managed app-domain to the unmanaged realm. Also, when transferring data between app-domains (to another application, on the same or another machine), you are also marshaling data from your app-domain, to another app-domain.
Hope this helps.
-- - Nicholas Paldino [.NET/C# MVP] - mv*@spam.guard. caspershouse.co m
"VM" <vm@none.com> wrote in message news:Oo******** ******@TK2MSFTN GP11.phx.gbl... > What's marshalling? I've had to use it extensively for a project but I don't > know what it means. I tried to look for a definition in the Internet > but I > couldn't find anything that would explain what it is. > Is converting a C-style struct to a C# class (or struct) marshalling? And > what about the function exports? Are those Marshalling too? > > Thanks for your help and thanks for helping me with the Dll exports > (the > several messages I posted in NG). Everything worked great. > > My last step is to convert some C-structs (with embedded structs and members > of type struct) into classes. But I won't be working on that yet. > >
Sam,
From the perspective of a .NET developer, managed code does in fact equal
..NET code, and unmanaged code is all code that does not run under the CLR.
However, Java bytecode is often referred to as "managed code" as well. By
this more generic definition, managed code is any code that is run in a
managed environment that controls security access and access to resources.
That managed environment might be .NET's Common Language Runtime, Java's
bytecode interpreter, or something else. It is not enough for the code to
require a supporting runtime; VB6 or FoxPro executables, for example, are
not "managed" in this sense. A support library full of routines is
passively called by such code; but unlike a suport library, a manged
environment may refuse application an request if it violates security
protection levels or accesses forbidden resources. In order to be able to
determine whether or not to honor requests, the application code must be
self-describing; hence the other requirement to call an execution
environment "managed."
So, generically, managed code (1) contains some kind of meta-data to
describe itself to its runtime environment with (2) actively grants or
denies application requests based on the defined security configurations for
the application, and the machine and network the application is interacting
with.
--Bob
"Sam Gentile [MVP - C#/.NET]" <no****@nomail. com> wrote in message
news:u$******** ******@TK2MSFTN GP09.phx.gbl... Thanks. So is recreating the structs into C#-readable structs (class or struct) marshalling?
Unmanaged code is simply all code pre .NET.
You're right of course as I did this only from the Microsoft perspective and
not a general question (as I thought this is what the question referred to)
--
-----
Sam Gentile
Microsoft MVP - C#/.NET
..NET Blog http://samgentile.com/blog/
Please do NOT contact me directly but respond to
the newsgroup instead.
---------
"Bob Grommes" <bo*@bobgrommes .com> wrote in message
news:Op******** *****@TK2MSFTNG P11.phx.gbl... Sam,
From the perspective of a .NET developer, managed code does in fact equal .NET code, and unmanaged code is all code that does not run under the CLR.
However, Java bytecode is often referred to as "managed code" as well. By this more generic definition, managed code is any code that is run in a managed environment that controls security access and access to resources. That managed environment might be .NET's Common Language Runtime, Java's bytecode interpreter, or something else. It is not enough for the code to require a supporting runtime; VB6 or FoxPro executables, for example, are not "managed" in this sense. A support library full of routines is passively called by such code; but unlike a suport library, a manged environment may refuse application an request if it violates security protection levels or accesses forbidden resources. In order to be able to determine whether or not to honor requests, the application code must be self-describing; hence the other requirement to call an execution environment "managed."
So, generically, managed code (1) contains some kind of meta-data to describe itself to its runtime environment with (2) actively grants or denies application requests based on the defined security configurations for the application, and the machine and network the application is interacting with.
--Bob
"Sam Gentile [MVP - C#/.NET]" <no****@nomail. com> wrote in message news:u$******** ******@TK2MSFTN GP09.phx.gbl... > Thanks. So is recreating the structs into C#-readable structs (class or > struct) marshalling?
Unmanaged code is simply all code pre .NET.
This thread has been closed and replies have been disabled. Please start a new discussion. Similar topics |
by: Ash |
last post by:
Hi,
Has anyone ever tried using "COM marshaling" for cross-
process communication?
In particular, I am interested in cross-process marshaling
between Managed Server and Unmanaged Client.
There seems to be very little documentation/examples on
this. I have a "Service" that needs to have a COM
|
by: Nikolay Petrov |
last post by:
Guys, please help. I am trying to make this work from at least 4 months.
I am new to programming and some things are difficult to me, but I really
need to make my project work.
I can't find anything helpfull in internet for 4 months ;-( .
Please someone who is more expirenced help me.
I am trying to use the Terminal Server APIs
There is as an API function WTSEnumerateSessions, which returns a
WTS_SESSION_INFO custom structure n times....
|
by: Rudy Velthuis |
last post by:
Hello,
Does anyone know how to create a struct that will marshal to the
following C++ struct A, containing an array of the user defined String10
type:
struct String10
{
char SLen;
char S;
|
by: Nadav |
last post by:
Hi
I am about to write a performance crutial system, I am considering writing this system based on native COM or unmanaged C++ exposed as CLI, Now, I Wonder... does exposing a native code through CLI ( using a mixed mode DLL ) have any performance penalty? consider one Native C++ CLI assembly calling a methos od another CLI Native C++ Assembly, will there be any marshaling penalty, will there be any penelty at-all? is it possible to pass a...
|
by: mirek |
last post by:
Hi,
I'm trying to import my old code to the .NET using managed wrappers.
I've read "Managed Extensions for C++ Migration Guide" document and was
trying to do what it stated in it. For example if my function takes
mfc's CString I was converting it this way:
char __pin* szUser =
static_cast<char*>(Marshal::StringToHGlobalAnsi(sUser).ToPointer());
and pass szUser to the function.
| |
by: Bill Medland |
last post by:
I am trying to do some P/Invoke custom marshaling and am looking for a
little help on custom marshaling a value type.
I am working based on Kate Gregory's "Arranging Custom Marshaling With
P/Invoke", which is unfortunately in C++ with managed extensions; I am
working in C#.
As with Kate's example I want to marshal from a System.DateTime to a
proprietary format. However I cannot figure out how to tell the system
to box the DateTime. ...
|
by: giddy |
last post by:
hi ,
I' know what the StructLayoutAttribute does. I've seen it being used.
But what does the Pack field do!?
This is what MSDN says:
Controls the alignment of data fields of a class or structure in
memory.
This field indicates the packing size that should be used when the
LayoutKind.Sequential value is specified. The value of Pack must be 0,
|
by: Frankie |
last post by:
I have been learning about asynchronous method calls and I keep coming
across this term, "marshal" and I would like to know what it means -
specifically. AFAIKT, it means "send" but I suspect there is a bit more than
that.
Looking to online docs, MSDN talks about the System.Runtime.Interop.Marshal
class - but I don't think that's relevant to what I'm seeing. Maybe it is...
The following is an example of the sort of thing I've been...
|
by: jpogorman |
last post by:
Hello,
I am trying to get c# custom marshaling working in a particular scenario but it does not appear to be working or not jumping into my marshaling class when I try to debug it. I am try to implement a performance improvement in the transfer of thousands of objects (ClientInfoDescriptor) over a remote call. The objects all have a model object (IDataDrivenModel) to describe them but there may only two or three model objects in total. These...
|
by: marktang |
last post by:
ONU (Optical Network Unit) is one of the key components for providing high-speed Internet services. Its primary function is to act as an endpoint device located at the user's premises. However, people are often confused as to whether an ONU can Work As a Router. In this blog post, we’ll explore What is ONU, What Is Router, ONU & Router’s main usage, and What is the difference between ONU and Router. Let’s take a closer look !
Part I. Meaning of...
|
by: Oralloy |
last post by:
Hello folks,
I am unable to find appropriate documentation on the type promotion of bit-fields when using the generalised comparison operator "<=>".
The problem is that using the GNU compilers, it seems that the internal comparison operator "<=>" tries to promote arguments from unsigned to signed.
This is as boiled down as I can make it.
Here is my compilation command:
g++-12 -std=c++20 -Wnarrowing bit_field.cpp
Here is the code in...
| |
by: jinu1996 |
last post by:
In today's digital age, having a compelling online presence is paramount for businesses aiming to thrive in a competitive landscape. At the heart of this digital strategy lies an intricately woven tapestry of website design and digital marketing. It's not merely about having a website; it's about crafting an immersive digital experience that captivates audiences and drives business growth.
The Art of Business Website Design
Your website is...
|
by: tracyyun |
last post by:
Dear forum friends,
With the development of smart home technology, a variety of wireless communication protocols have appeared on the market, such as Zigbee, Z-Wave, Wi-Fi, Bluetooth, etc. Each protocol has its own unique characteristics and advantages, but as a user who is planning to build a smart home system, I am a bit confused by the choice of these technologies. I'm particularly interested in Zigbee because I've heard it does some...
|
by: isladogs |
last post by:
The next Access Europe User Group meeting will be on Wednesday 1 May 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 a new presenter, Adolph Dupré who will be discussing some powerful techniques for using class modules.
He will explain when you may want to use classes instead of User Defined Types (UDT). For example, to manage the data in unbound forms.
Adolph will...
|
by: conductexam |
last post by:
I have .net C# application in which I am extracting data from word file and save it in database particularly. To store word all data as it is I am converting the whole word file firstly in HTML and then checking html paragraph one by one.
At the time of converting from word file to html my equations which are in the word document file was convert into image.
Globals.ThisAddIn.Application.ActiveDocument.Select();...
|
by: 6302768590 |
last post by:
Hai team
i want code for transfer the data from one system to another through IP address by using C# our system has to for every 5mins then we have to update the data what the data is updated we have to send another system
|
by: muto222 |
last post by:
How can i add a mobile payment intergratation into php mysql website.
| |
by: bsmnconsultancy |
last post by:
In today's digital era, a well-designed website is crucial for businesses looking to succeed. Whether you're a small business owner or a large corporation in Toronto, having a strong online presence can significantly impact your brand's success. BSMN Consultancy, a leader in Website Development in Toronto offers valuable insights into creating effective websites that not only look great but also perform exceptionally well. In this comprehensive...
| |