| Массив байт из COM в C#
					27.09.2006
				 | Odi$$ey | 
			Здравствуйте, <Аноним>, Вы писали:
А>Подскажите, какой нужен тип для передачи двоичных данных в COM-e, чтобы использовался стандартный маршалинг.
А>И как эту функцию можно поюзать, например в C#.
COM:
C#:
tlbimp comserver.dll /out:comservernet.dll
	
	
	А>Подскажите, какой нужен тип для передачи двоичных данных в COM-e, чтобы использовался стандартный маршалинг.
А>И как эту функцию можно поюзать, например в C#.
COM:
[id(1), helpstring("method GetBinary")] HRESULT GetBinary([out,retval] SAFEARRAY(BYTE) *arr);STDMETHODIMP CTestInterface::GetBinary(SAFEARRAY* *arr)
{
   BYTE src[] = {1,2,3,4,5,6,7,8,9,10,11};
   LPVOID theBytes = NULL;
   CComSafeArray<BYTE> NewArray(sizeof(src));
   SafeArrayAccessData( *NewArray.GetSafeArrayPtr(), &theBytes );
   memcpy( theBytes, src, sizeof(src) );
   SafeArrayUnaccessData( *NewArray.GetSafeArrayPtr() );
   *arr = NewArray.Detach();
   return S_OK;
}C#:
tlbimp comserver.dll /out:comservernet.dll
using comservernet;
...
  TestInterface testobj = new TestInterface();
  byte[] arr = testobj.GetBinary();... << RSDN@Home 1.2.0 alpha rev. 654>>
		| 27.09.2006 0 комментариев | 
