mirror of
https://github.com/eclipse-cdt/cdt
synced 2025-07-14 04:25:21 +02:00
55 lines
1.5 KiB
C++
55 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_OS.h"
|
||
|
|
||
|
#define RAPI_NATIVE(func) Java_org_eclipse_tm_rapi_OS_##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();
|
||
|
}
|