I'm making a "wrapper" for an unmanaged DLL (written, I'm fairly certain in C). I have a c++ "wrapper" that I'm trying to convert to VB.net. I've got most of the program working, but I've hit a brick wall.
I'm trying to convert the following two structures from their c++ versions to their vb.net versions. I cannot be sure which is the problem because both must be passed at the same time. The error I am getting is thrown by the object and indicates "Invalid structure size specified". I can cause this error on other objects when I either don't set the dwSize variable, leave off a parameter or change the parameter type incorrectly. Note that the dwSize parameter is supposed to contain the size of each structure. I'm successfully calculating that for my other structures and I'm using the same method on these and the results appear correct, so I do not believe the problem is found there. The object uses a lot of structures and the rest of them are working. These two are the only ones with a) an unsigned character pointer b) an unsigned long array and c) doubles.
C++ versions:
CODE:
I don't think I'm missing any parameters - the help file seems to agree with me on this, but it's theoretically possible that there is something missing (though I don't think so for other reasons as well). My suspicion is that it's dwPalette, pImageData or pMaskData with (in my uninformed opinion) more suspicion on the pImageData and pMaskData.
I have written my own function, which in C would be declared like this, using standard Win32 calling conventions:int Thing( char * command, char * buffer, int * BufSize);I have the following amount of VB figured out, which should import the dll and call this function, wrapping it up to make it easy to call Thing("CommandHere",GetDataBackHere).UPDATE:This code is now a working solution, as shown here:
Imports Microsoft.VisualBasic Imports System.Runtime.InteropServices Imports System Imports System.Text
[Code]...
Updates: I got the code to build by following the help received here, and then I had forgot the As Return Type (which got me a MarshalDirectiveException PInvokeRestriction). Then I had an assertion failure inside my DLL, which lead to an SEHException. Once fixed, this works BEAUTIFULLY. There are newsgroups where people are saying this can not be done, that VB only loads managed dll assemblies (which I guess is the normal thing most VB users are used to).
I am trying to write a VB.NET program that will call a function in an unmanaged C DLL passing the structure like this:[code]What I have not been able to figure out is how to handle the "unsigned char *msg" part. How would you define this in the VB.NET Structure?
I'm migrating some VB6 code to VB.net,the code contains a structure that contains 1d arrays, 2d arrays, and few other variables.The general outline of the Vb.net structure is as under
[code]...
The call to the dll is declared as under Public Declare Sub getState Lib "val.dll" (ByRef state As Test)Elsewhere on this site I realized that we have to "marshal" the structure to allow it to be compatible with the unmanaged code that is about to accept it.However I still receiving runtime errors when running the code, I don't have any clue of how to use the System.Runtime.InteropServices.Marshal class.What would be the correct way to pass this structure to the dll?EDIT: The original VB6 data type is
Private Declare Function src_simple Lib "libsamplerate.dll" (ByVal data As IntPtr, ByVal converter_type As Integer, ByVal channels As Integer) As Integer<br/> Private Declare Function src_strerror Lib "libsamplerate.dll" (ByVal err As Integer) As IntPtr<br/> <br/> <StructLayout(LayoutKind.Sequential, Pack:=1)> _
I am trying to use VirtualQueryEx to read the memory of a process (first instance of notepad in this case). This function returns a pointer to the MEMORY_BASIC_INFORMATION structure. I am trying to read this structure.But everytime I try to access a member of the structure, I get a zero, which indicates I am messing something up.I am copying my code here.
I read in a unique file type, its called .pkm, it's just a collection of hex data. Anyways, I'm using VB Express 2005 (or 2008 since it's free), and I read in the file, and printed out the values. It printed out the ASCII character equivalent, so all I saw were the weird symbols and all (the hex characters in this file do not convert using ASCII). What I want to do is convert it to hex so I can see what the hex values are.
Code: Dim file As String Dim data1 As String file = "D:Documents and SettingsownerDesktopPokemon7-10-08_10ANNIV_ENG_Lugia.pkm"
[Code].....
Too bad image code is off. That is a screen from a hex editor that reads it in properly. Currently my program displays it the way it is seen on the right, but I need it displayed the way it is on the left, in plain hex.
I'm working on a Unit Conversion Module. I've found several good ideas here, as well as on CodeProject. My code looks very similar to this C# code at (url)
From the following you'll probably gather that I'm pretty new to programming.I've created a Units base class that I inherit to create each unit type.[code...]
I need to create several different Unit types, such as Length, Pressure, etc. This is working well except for one issue. I'd like to be able to change the UnitType, and automatically update the UnitValue. Such that if the Unit object has a value of 1 and a type of Inch, and the type is changed to Cm, the value would update to 2.54.
Something like this.... I've seen examples of this, but the difference here is that, I can't specify the Covert function in my base class because it changes with each new UnitClass I create. [code...]
I tried making the Property UnitType Overridable and creating a new Override Property for UnitType in each UnitClass that I created, but I failed to get that to work.
I am trying to convert text in a text box (txtEventDate.Text) to a date type in a structure: ThisEvent.EventDate (declared as date). The text in the textbox is of the form: 05/18/1927 (i.e. May 18th, 1927) and after looking long and hard thru the forums attempting several different things, like:
The code is commented out because none of them convert the string to a date value (I know a date does not have a format and I have looked thru the MSDN). How can I stay logged and composing a thread past some arbitrary time limit that forces a re-login?
i want to read a character 1 by 1 from a string and a .txt, i know all about stream reader so for the .txt would it be somthing like:textbox1.text = tr.readCharacter.i would prefer to be able to read from a textbox or String array though.
I need validation for string to comply with next: no space char starts with one delimiter char ends with one delimiter char has no other char as delimiter char. Updated sorry missed that should only be one delimiter char at start and at the end
I have split a string into a char array, now i need to copy the char array to an int array with the ASCII values of each char.Donīt know how to do it without looping each value.
This is my code:
origen = RichTextBox1.Text.ToString Dim valor As Char() = origen.ToCharArray Dim numeros As Integer() = (How can i convert "valor" to an int array?????)
I am trying to create a UInt128 structure, based on some C code I found. The 128 bit number is stored as two UInt64's. All was going well until:1. I tried to define MaxValue and MinValue. The code I found was
I'm working with byte arrays and building and disassembling Int16/UInt16 and Int32/UInt32 from them. I'd like to not worry about the Sign bit until I return the final value and just have the code return the appropriate value for the data type that was requested to be converted to/from the byte array
I'm new to VB.Net. I'm using a library call setInstance(ByVal instance As UInteger) in my VB.Net code. The parameter I need to pass is an Integer. Is there anything I need to do to convert the integer parameter to an unsigned integer? The number is garunteed to be positive and less than 10.
I'm trying to generate random dates in between two dates that are selected with a date and time selection control.Ideally, I would like to get the 'ticks' of each date, generate a random number between those, and then convert that back into a date.However I'm getting arithmetic overflow errors when I try to generate a random number from the between the ticks. I've tried many approaches - directly seeding with both the low and high date ticks, as well as subtracting.
Private Function randomDate() As ULong Dim rand As New Random(Date.Now.Ticks Mod Integer.MaxValue) Dim holder As ULong = DateTimePicker2.Value.Ticks - DateTimePicker1.Value.Ticks