C \ # 노트, C \ # C 와 의 상호작용, 비 위탁 관리 코드
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run
경로 에 키 값 이 시작 경 로 를 가리 키 는 것 을 추가 합 니 다.주석 해석
/****************************************************************************
* @fn EnumDevices
* @brief
* @param nLayerType IN :1-GigE; 4-USB;
* @param stDeviceList OUT
* @return :0; :
****************************************************************************/
순서대로
매개 변 수 는 방법의 매개 변수 목록 에서 ref 키 워드 를 사용 할 때 매개 변 수 를 값 에 따라 전달 하 는 것 이 아니 라 참조 에 따라 전달 하 는 것 을 표시 합 니 다.ref 키 워드 는 형 삼 을 실제 인삼 의 별명 으로 만 듭 니 다. 이것 은 반드시 변수 여야 합 니 다.다시 말 하면 형 삼 에 대한 모든 조작 은 실 삼 에 대한 것 이다.ref 인 자 를 사용 하려 면 방법 정의 와 호출 방법 은 모두 ref 키 워드 를 사용 하여 ref 또는 in 형 삼 에 전달 하 는 실제 인삼 을 초기 화 한 다음 에 전달 해 야 합 니 다.
//
float fExposure = 0;
nRet = m_pcCameraOperator.GetFloatValue("ExposureTime", ref fExposure);
//
public int GetFloatValue(string strKey, ref float pfValue){...}
// ,
public int SaveImage(ref CMvSmartSDK.MVSC_IMG_CONVERT_PARAM pstImageConvertParam){...}
//
public struct MVSC_IMG_CONVERT_PARAM{...}
Marshalas 속성 및 사용
Marshalas 속성 은 위탁 관리 코드 와 비 위탁 관리 코드 사이 에 데 이 터 를 어떻게 봉 하 는 지 알려 줍 니 다.Marshalas 속성 및 사용
public struct MV_SC_DEVICE_INFO_LIST
{
public UInt32 nDeviceNum;
//
[MarshalAs(UnmanagedType.ByValArray, SizeConst = MV_SC_MAX_DEVICE_NUM)]
public MV_SC_DEVICE_INFO[] astDeviceInfo;
};
Unmanaged Type 데이터 형식 은 매개 변수 나 필드 를 비 위탁 관리 코드 로 보 내 는 방법 을 지정 합 니 다.
위탁 관리 코드 와 비 위탁 관리 코드 는. net 프레임 워 크 를 기반 으로 하 는 코드 입 니 다. 프레임 워 크 가 있 으 면 메모리 자원 관리 비 위탁 관리 코드 는 프레임 워 크 에 의 해 제어 되 지 않 는 코드 입 니 다. 예 를 들 어 dll 의 c 코드 와 같 습 니 다.
키워드
Thread 형식 C \ # 에서 스 레 드 관리
Intr 형식 인 스 턴 스 의 Intr 에 서 는 System. IO. FileStream 류 를 사용 하여 저 장 된 파일 핸들 을 광범 위 하 게 사용 합 니 다.
C \ # C 언어의 API 를 호출 할 때 보통 void * 포인 터 를 IntPtr C \ # 포인 터 를 소개 대상 변환 코드 로 변환 합 니 다.
위탁 관리 대상 에서 비 위탁 관리 메모리 블록 으로 데 이 터 를 편성 하 는 방법 (역방향 조작 Marshal. PtrToStructure) Marshal. structureToPtr marshal. structuretoptr 는 비 위탁 관리 메모리 를 위탁 관리 메모리 Marshal. PtrToStructure 위탁 관리 메모리 변화 분석 에 저장 합 니 다.
anotherP = (Point)Marshal.PtrToStructure(pnt, typeof(Point));
을 되 돌려 주 고 위탁 관리 코드 가 아 닌 대상 을 모두 복사 합 니 다. 이때 메모리 가 900 M 홈 페이지 소스 코드 예시
using System;
using System.Runtime.InteropServices;
using System.Threading;
public struct Point
{
public int x;
public int y;
public byte[] buffer;
// byte[] buffer = new byte[MAX_IMAGE_FRAME_SIZE];
}
class Example
{
static void Main()
{
// Create a point struct.
Point p;
p.x = 1;
p.y = 1;
Thread.Sleep(3000);
// 100M
p.buffer = new byte[1024 * 1024 * 300];
Console.WriteLine("The value of first point is " + p.x + " and " + p.y + "." + p.buffer.Length);
Thread.Sleep(1000);
// Initialize unmanged memory to hold the struct.
IntPtr pnt = Marshal.AllocHGlobal(Marshal.SizeOf(p));
Thread.Sleep(1000);
try
{
// Copy the struct to unmanaged memory.
Marshal.StructureToPtr(p, pnt, false);
Thread.Sleep(1000);
// Create another point.
Point anotherP;
// Set this Point to the value of the
// Point in unmanaged memory.
anotherP = (Point)Marshal.PtrToStructure(pnt, typeof(Point));
Thread.Sleep(1000);
Console.WriteLine("The value of new point is " + anotherP.x + " and " + anotherP.y + ".");
Console.WriteLine(".." + p.buffer.Length);
Thread.Sleep(1000);
}
finally
{
// Free the unmanaged memory.
Marshal.FreeHGlobal(pnt);
}
}
}
그래 픽 C \ # 내 장 된 그래 픽 클래스 C \ # 그래 픽 관련
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.