[samba] DCOM or not DCOM

Alexander Bokovoy ab на altlinux.org
Ср Сен 22 13:52:01 MSD 2004


On Wed, Sep 22, 2004 at 03:20:34PM +0600, BSW wrote:
> Alexander Bokovoy wrote:
> >Записываем сетевой трафик и анализируем в ethereal.
> Да, мысль такая была с самого начала, но отпуск... это святое.
> Итак, начнем, и начнем сразу с того места, где, по видимому, происходит 
> облом (показаны только некоторые поля):
> Клиент:
> 	протокол:	DCE RPC
> 	version:	5
> 	packet type:	Bind
> 	interface UUID:	00020400-0000-0000-C000-000000000046
> Сервер:
> 	протокол:	DCE RPC
> 	version:	5
> 	packet type:	Bind_ack
> Клиент:
> 	протокол:	DCE RPC
> 	version:	5
> 	packet type:	AUTH3
> 
> 	протокол:	DCE RPC
> 	version:	5
> 	packet type:	Request
> 	opnum:		5
> 	UNKUUID:	00020400-0000-0000-C000-000000000046
> Сервер:
> 	протокол:	DCE RPC
> 	version:	5
> 	packet type:	Fault
> 	opnum:		5
> 	status:		Unknown(0x00000005)
В Samba 4 этот opnum в интерфейсе 00020400-0000-0000-C000-000000000046
соответствует функции GetIDsOfNames (source/librpc/idl/dcom.idl):

[
	object,
	uuid(00020400-0000-0000-C000-000000000046),
	version(0.0)
] interface IDispatch : IUnknown
{
	/*****************/
	/* Function 0x03 */
	HRESULT GetTypeInfoCount(
						 [out] uint16 *pctinfo);

	typedef struct {
		uint8 FIXME;
	} ITypeInfo;

	typedef struct {
		ITypeInfo *pTInfo;
	} REF_ITypeInfo;

	/*****************/
	/* Function 0x04 */
	HRESULT GetTypeInfo (
					 [in] uint16 iTInfo,
					 [in] LCID lcid,
					 [out] REF_ITypeInfo *ppTInfo);

	/*****************/
	/* Function 0x05 */
	HRESULT GetIDsOfNames(
					  [in] IID *riid,
					  /*FIXME[in,size_is(cNames)] OLESTR *rgszNames[], */
					  [in] uint16 cNames,
					  [in] LCID lcid,
					  [out,size_is(cNames)] DISPID *rgDispId);

	typedef struct {
		uint16 vartype;
		uint16 FIXME;
	} VARIANT;
	
	typedef struct {
		uint16 FIXME;
	} DISPPARAMS;

	/* Exception ? */
	typedef struct {
		uint16 FIXME;
	} EXCEPINFO;
	
	/*****************/
	/* Function 0x06 */
	HRESULT Invoke(
			   [in] DISPID dispIdMember,
			   [in] IID *riid,
			   [in] LCID lcid,
			   [in] uint16 wFlags,
			   [out,in] DISPPARAMS *pDispParams,
			   [out] VARIANT *pVarResult,
			   [out] EXCEPINFO *pExcepInfo,
			   [out] uint16 *puArgErr);
}

В 3.0 этот интерфейс еще не поддерживается.

-- 
/ Alexander Bokovoy
Samba Team                      http://www.samba.org/
ALT Linux Team                  http://www.altlinux.org/
Midgard Project Ry              http://www.midgard-project.org/


Подробная информация о списке рассылки Samba