lockresource (kernel32)
Last changed: -87.61.63.34

.
Summary

C# Signature:

[DllImport("kernel32.dll")]
static extern IntPtr LockResource(IntPtr hResData);

User-Defined Types:

None.

Notes:

does not call SetLastError, according to MSDN.

Tips & Tricks:

this function returnes a pointer to the resource. you can use Marshal.Copy() to copy the data from the pointer to a managed array.

Comment
I don't think this is possible. Marshal.Copy works the other way, it copies from managed storage to unmanaged storage.

Sample Code:

      pResource = LockResource(hResource);
      if (hResource.ToInt32() == 0) {
    throw new ApplicationException("could not get pointer to file");
      }
      fileSizeComp = ((Module)mFiles[index]).CompSize;
      fileSizeUnComp = ((Module)mFiles[index]).Size;
      byte[] fileBuffComp = new byte[fileSizeComp + mOffset];//original buffer
      byte[] fileBuffUnComp = new byte[fileSizeUnComp + 1]; //uncompressed file
      //copy to managed memory:
      Marshal.Copy(pResource, fileBuffComp, 0, fileSizeComp + mOffset);

Comment
I don't think this is possible. Marshal.Copy works the other way, it copies from managed storage to unmanaged storage.

Alternative Managed API:

Do you know one? Please contribute it!

Documentation