Click here to Skip to main content
15,907,281 members
Home / Discussions / Managed C++/CLI
   

Managed C++/CLI

 
GeneralRe: VS 2005 doesn't give me an .exe file when I build a C++ project Pin
Mark Salsbery16-Jan-08 8:25
Mark Salsbery16-Jan-08 8:25 
GeneralRe: VS 2005 doesn't give me an .exe file when I build a C++ project Pin
bwilhite16-Jan-08 8:29
bwilhite16-Jan-08 8:29 
GeneralRe: VS 2005 doesn't give me an .exe file when I build a C++ project Pin
bwilhite16-Jan-08 8:31
bwilhite16-Jan-08 8:31 
GeneralRe: VS 2005 doesn't give me an .exe file when I build a C++ project Pin
bwilhite16-Jan-08 8:36
bwilhite16-Jan-08 8:36 
GeneralRe: VS 2005 doesn't give me an .exe file when I build a C++ project Pin
led mike16-Jan-08 10:16
led mike16-Jan-08 10:16 
GeneralRe: VS 2005 doesn't give me an .exe file when I build a C++ project Pin
bwilhite16-Jan-08 21:09
bwilhite16-Jan-08 21:09 
GeneralRe: VS 2005 doesn't give me an .exe file when I build a C++ project Pin
bwilhite16-Jan-08 8:17
bwilhite16-Jan-08 8:17 
GeneralMarshal a struct to unmanaged memory Pin
Member 412487316-Jan-08 6:53
Member 412487316-Jan-08 6:53 
Hi,

I'm trying to marshal a struct in unmanaged memory but it doesn't work.
I have my Windows Service that is filling up the struct's fields and then calls the API DeviceIoControl passing as argument an IntPtr.
When I debug my driver (kernel mode) I'm not able to see the real values of the fields but only random data. Someone can tell me what's wrong?

This is my code:

<br />
[DllImport("kernel32.dll", SetLastError = true)]<br />
extern bool DeviceIoControl(IntPtr hDevice, int dwIoControlCode, IntPtr lpInBuffer, int nInBufferSize, IntPtr lpOutBuffer, int nOutBufferSize, int %lpBytesReturned, IntPtr lpOverlapped);<br />
<br />
[StructLayout(LayoutKind::Sequential)]<br />
public ref struct OPEN_FILE_INFORMATION<br />
{<br />
	UInt64 FileSize;<br />
	bool ReadOnly;<br />
    UInt16 FileNameLength;<br />
	[MarshalAs(UnmanagedType::ByValArray, SizeConst=1)]<br />
    String ^FileName;<br />
};<br />
<br />
public: void Mount(void)<br />
{<br />
<br />
...........<br />
<br />
OPEN_FILE_INFORMATION ^OpenFileInformation = gcnew OPEN_FILE_INFORMATION();<br />
		<br />
String ^ImagePath = this->AppPath + "\\VirtualDisk.disk";<br />
int structSize = Marshal::SizeOf(OPEN_FILE_INFORMATION::typeid);<br />
int totalStructSize = structSize + ImagePath->Length;<br />
<br />
OpenFileInformation->FileSize = 8388608; // 8 MB<br />
OpenFileInformation->ReadOnly = false;<br />
OpenFileInformation->FileNameLength = ImagePath->Length;<br />
OpenFileInformation->FileName = ImagePath;<br />
<br />
IntPtr ofiPtr = Marshal::AllocHGlobal(totalStructSize);<br />
Marshal::StructureToPtr(OpenFileInformation, ofiPtr, true);<br />
<br />
cli::array<unsigned char, 1> ^tokens = Text::Encoding::Unicode->GetBytes(ImagePath);<br />
<br />
int offset = 11;<br />
<br />
for each (unsigned char c in tokens)<br />
{<br />
    Marshal::WriteByte(ofiPtr, offset, c);<br />
    offset++;<br />
}<br />
<br />
if (!DeviceIoControl(Device, IOCTL_FILE_DISK_OPEN_FILE, ofiPtr, totalStructSize - 1, IntPtr::Zero, 0, BytesReturned, IntPtr::Zero))<br />
{<br />
	DefineDosDevice(DDD_REMOVE_DEFINITION, DriveLetter + ":", nullptr);<br />
}<br />
<br />
Marshal::FreeHGlobal(ofiPtr);<br />
}<br />


Thanks in advance.

Sorry for my poor english.
GeneralRe: Marshal a struct to unmanaged memory Pin
led mike16-Jan-08 7:54
led mike16-Jan-08 7:54 
GeneralRe: Marshal a struct to unmanaged memory Pin
Member 412487316-Jan-08 8:03
Member 412487316-Jan-08 8:03 
GeneralRe: Marshal a struct to unmanaged memory Pin
led mike16-Jan-08 10:27
led mike16-Jan-08 10:27 
AnswerRe: Marshal a struct to unmanaged memory Pin
George L. Jackson17-Jan-08 9:50
George L. Jackson17-Jan-08 9:50 
GeneralRe: Marshal a struct to unmanaged memory Pin
Member 412487318-Jan-08 2:45
Member 412487318-Jan-08 2:45 
GeneralCall ATL Com dll function in Managed C++ Pin
Rahul.RK16-Jan-08 0:30
Rahul.RK16-Jan-08 0:30 
GeneralRe: Call ATL Com dll function in Managed C++ Pin
led mike16-Jan-08 5:37
led mike16-Jan-08 5:37 
GeneralRe: Call ATL Com dll function in Managed C++ Pin
Mark Salsbery16-Jan-08 7:24
Mark Salsbery16-Jan-08 7:24 
GeneralRe: Call ATL Com dll function in Managed C++ Pin
led mike16-Jan-08 7:55
led mike16-Jan-08 7:55 
QuestionProblem with InternalsVisibleToAttribute and inter-assembly class members access Pin
Abix15-Jan-08 4:25
Abix15-Jan-08 4:25 
GeneralRe: Problem with InternalsVisibleToAttribute and inter-assembly class members access Pin
led mike15-Jan-08 4:37
led mike15-Jan-08 4:37 
GeneralRe: Problem with InternalsVisibleToAttribute and inter-assembly class members access [modified] Pin
Abix15-Jan-08 5:01
Abix15-Jan-08 5:01 
GeneralVisual c++ Net application Deployment Pin
mikobi14-Jan-08 19:32
mikobi14-Jan-08 19:32 
GeneralRe: Visual c++ Net application Deployment Pin
led mike15-Jan-08 4:40
led mike15-Jan-08 4:40 
GeneralTo Load Image Pin
mikobi14-Jan-08 4:22
mikobi14-Jan-08 4:22 
GeneralRe: To Load Image Pin
Paul Conrad25-Jan-08 16:01
professionalPaul Conrad25-Jan-08 16:01 
GeneralRe: To Load Image Pin
mikobi25-Jan-08 19:27
mikobi25-Jan-08 19:27 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.