A
download IPersist.cpp
Language: C++
LOC: 27
Project Info
JCom (Java-COM Bridge)(jcom)
Server: SourceForge
Type: cvs
...e\j\jcom\jcom\jcom\src\cpp\
   callCom.cpp
   Com.cpp
   guid.cpp
   IDispatch.cpp
   IEnumVARIANT.cpp
   InvokeHelper.cpp
   IPersist.cpp
   ITypeInfo.cpp
   ITypeLib.cpp
   IUnknown.cpp
   JCom.h
   ...2_no_0005fji_jcom_Com.h
   ...005fji_jcom_IDispatch.h
   ...fji_jcom_IEnumVARIANT.h
   ...0005fji_jcom_IPersist.h
   ...005fji_jcom_ITypeInfo.h
   ...0005fji_jcom_ITypeLib.h
   ...0005fji_jcom_IUnknown.h
   JString.cpp
   VARIANT.cpp

#include <jni.h>
#include "atlbase.h"
#include "atlconv.h"
#include "JCom.h"
#include "jp_ne_so_0005fnet_ga2_no_0005fji_jcom_IPersist.h"

/* **********************************************************************
 * Class:     jp_ne_so_0005fnet_ga2_no_0005fji_jcom_IPersist
 * Method:    _getClassID
 * Signature: ()Ljp/ne/so_net/ga2/no_ji/jcom/GUID;
	IPersistC^[tF[XĂ邩ǂׁAĂȂ΁A
	IPersist::getClassIDsBĂȂ΁Anull ԂB
	if it have IPersist interface, then return IPersist::getClassID().
	else return (null).
 * **********************************************************************/
JNIEXPORT jobject JNICALL Java_jp_ne_so_1net_ga2_no_1ji_jcom_IPersist__1getClassID
  (JNIEnv *env, jobject obj)
{
	// IPersistC^[tF[XoB// get IPersist pointer from env
	jclass cls = env->GetObjectClass(obj);
	jfieldID fieldID = env->GetFieldID(cls, "pIUnknown", "I"); 
	IPersist* pIPersist = (IPersist*)env->GetIntField(obj, fieldID);
	if(pIPersist == NULL) {
		// OZbg
		jclass clsJComException = env->FindClass(CLASS_JCOM_EXCEPTION);
		env->ThrowNew(clsJComException, "IPersist not created");
		return NULL;
	}
	CLSID clsid;
	HRESULT hr = pIPersist->GetClassID(&clsid);
	if(FAILED(hr)) {
		// OZbg. // set exception
		char message[256];
		sprintf(message, "IPersist::getClassID() failed HRESULT=0x%X", hr);
		jclass clsJComException = env->FindClass(CLASS_JCOM_EXCEPTION);
		env->ThrowNew(clsJComException, message);
		return NULL;
	}
	return GUID2jobject(env, &clsid);
}


About Koders | Resources | Downloads | Support | Black Duck | Terms of Service | DMCA | Privacy Policy | Contact Us