우리는 중첩 된 구조를 일부 장치 드라이버의 인터페이스로 사용합니다. 때때로 개별 요소를 업데이트해야합니다. '주소'연산자가 유용 할 수 있지만 '오프셋'함수 나 연산자는 내가 실제로 찾고있는 것이지만 어떻게 할 것인지 잘 모르겠습니다. 즉, structureN.elementX가 구조의 시작 부분에서 얼마나 떨어져 있는지를 바이트 단위로 나타 냅니까?
거기에 'Address of'또는 .net의 오프셋 연산자와 같은 것이 있습니까?
[StructLayout(LayoutKind.Sequential)]
public struct s1
{
UInt16 elem1;
UInt16 elem2;
UInt16 elem3;
}
[StructLayout(LayoutKind.Sequential)]
public struct s2
{
UInt16 elem1;
UInt16 elem2;
UInt16 elem3;
}
[StructLayout(LayoutKind.Sequential)]
public struct driver
{
public S1 s1;
public S2 s2;
}
는 예를 들어 우리는 오프셋 어드레스, 데이터 블록 길이를 제공하는 방법으로, driver.s1.elem3를 업데이트 장치 드라이버 일부 데이터를 전송해야한다. 로컬 복사본을 업데이트 한 다음 앞서 언급 한 데이터로 장치 API를 호출합니다. 안전하지 않은 메소드 호출로이 작업을 수행해야하는지 확신 할 수 없습니다. 어떤 도움이 필요합니까?
확실히 관리되지 않는 코드에서 수행해야하는 작업처럼 들립니다. 이것은 일종의 것입니다 .Net은 도망 가야했습니다. – tloflin
다른 7 개의 질문에 대한 답변이 만족스럽지 않으십니까? –
이해하지만 장치 드라이버 사람들은이 방법으로 UI를 사용하기를 원합니다. 그것은 결코 쉬운 일이 아닙니다. ... – Gio