1
0
Fork 0
mirror of https://github.com/eclipse-cdt/cdt synced 2025-07-13 20:15:22 +02:00
cdt/wince/org.eclipse.tm.rapi/native/Rapi.cpp

54 lines
1.5 KiB
C++

/*******************************************************************************
* Copyright (c) 2008 Radoslav Gerganov
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Radoslav Gerganov - initial API and implementation
*******************************************************************************/
#define _WIN32_DCOM
#include <WinSock2.h>
#include <rapi2.h>
#include "org_eclipse_tm_rapi_Rapi.h"
#define RAPI_NATIVE(func) Java_org_eclipse_tm_rapi_Rapi_##func
JNIEXPORT jint JNICALL RAPI_NATIVE(CoInitializeEx)
(JNIEnv *env, jclass that, jint arg0, jint arg1)
{
return (jint)CoInitializeEx((LPVOID)arg0, arg1);
}
JNIEXPORT void JNICALL RAPI_NATIVE(CoUninitialize)
(JNIEnv *env, jclass that)
{
CoUninitialize();
}
JNIEXPORT jint JNICALL RAPI_NATIVE(CreateRapiDesktop)
(JNIEnv *env, jclass that, jintArray arg0)
{
jint rc = 0;
jint *lparg0 = NULL;
if (arg0) {
lparg0 = env->GetIntArrayElements(arg0, NULL);
if (lparg0 == NULL) goto fail;
}
rc = CoCreateInstance(CLSID_RAPI, NULL, CLSCTX_INPROC_SERVER,
IID_IRAPIDesktop, (void**)lparg0);
fail:
if (arg0 && lparg0) env->ReleaseIntArrayElements(arg0, lparg0, 0);
return rc;
}
JNIEXPORT void JNICALL RAPI_NATIVE(ReleaseIUnknown)
(JNIEnv *env, jclass that, jint arg0)
{
if (arg0 == 0) return;
IUnknown *ptr = (IUnknown*) arg0;
ptr->Release();
}