Ejemplo n.º 1
0
JNIEXPORT void JNICALL Java_jmtp_PortableDeviceManagerImplWin32_refreshDeviceListImpl
(JNIEnv* env, jobject obj)
{
    HRESULT hr;
    IPortableDeviceManager* pDeviceManager;

    pDeviceManager = GetPortableDeviceManager(env, obj);
    hr = pDeviceManager->RefreshDeviceList();
    if(FAILED(hr))
    {
        ThrowCOMException(env, L"Failed to refresh the devicelist", hr);
        return;
    }
}
Ejemplo n.º 2
0
JNIEXPORT jobjectArray JNICALL Java_jmtp_PortableDeviceManagerImplWin32_getDevicesImpl
(JNIEnv* env, jobject obj)
{
    HRESULT hr;
    IPortableDeviceManager* pDeviceManager;
    LPWSTR* deviceIDs;
    DWORD dwCount;
    jobjectArray jobjaDeviceIDs;

    pDeviceManager = GetPortableDeviceManager(env, obj);
    hr = pDeviceManager->GetDevices(NULL, &dwCount);
    if(FAILED(hr))
    {
        ThrowCOMException(env, L"Failed to count the connected devices", hr);
        return NULL;
    }
    else
    {
        deviceIDs = new LPWSTR[dwCount];
        hr = pDeviceManager->GetDevices(deviceIDs, &dwCount);
        if(SUCCEEDED(hr))
        {
            jobjaDeviceIDs = env->NewObjectArray(dwCount, env->FindClass("java/lang/String"), NULL);
            for(DWORD i = 0; i < dwCount; i++) {
                env->SetObjectArrayElement(jobjaDeviceIDs, i, env->NewString((jchar*)deviceIDs[i], wcslen(deviceIDs[i])));
                CoTaskMemFree(deviceIDs[i]);
            }
        }

        delete[] deviceIDs;

        if(FAILED(hr))
        {
            ThrowCOMException(env, L"Failed to count the connected devices", hr);
            return NULL;
        }

        return jobjaDeviceIDs;
    }
}
Ejemplo n.º 3
0
JNIEXPORT jstring JNICALL Java_jmtp_PortableDeviceImplWin32_getDeviceDescription
	(JNIEnv* env, jobject obj, jstring deviceID)
{
	IPortableDeviceManager* pDeviceManager;
	LPWSTR wszDeviceID;
	LPWSTR wszDeviceDescription;
	DWORD length;
	jstring description;

	pDeviceManager = GetPortableDeviceManager(env, obj);
	wszDeviceID = (WCHAR*)env->GetStringChars(deviceID, NULL);

	pDeviceManager->GetDeviceDescription(wszDeviceID, NULL, &length);
	wszDeviceDescription = new WCHAR[length + 1];
	pDeviceManager->GetDeviceDescription(wszDeviceID, wszDeviceDescription, &length);	
	description = env->NewString((jchar*)wszDeviceDescription, wcslen(wszDeviceDescription));

	env->ReleaseStringChars(deviceID, (jchar*)wszDeviceID);
	delete wszDeviceDescription;

	return description;
}
Ejemplo n.º 4
0
JNIEXPORT jstring JNICALL Java_jmtp_PortableDeviceImplWin32_getDeviceFriendlyName
	(JNIEnv* env, jobject obj, jstring deviceID)
{
	IPortableDeviceManager* pDeviceManager;
	LPWSTR wszDeviceID;
	LPWSTR wszDeviceFriendlyName;
	DWORD length;
	jstring friendlyName;

	pDeviceManager = GetPortableDeviceManager(env, obj);
	wszDeviceID = (WCHAR*)env->GetStringChars(deviceID, NULL);

	pDeviceManager->GetDeviceFriendlyName(wszDeviceID, NULL, &length);
	wszDeviceFriendlyName = new WCHAR[length + 1];
	pDeviceManager->GetDeviceFriendlyName(wszDeviceID, wszDeviceFriendlyName, &length);	
	friendlyName = env->NewString((jchar*)wszDeviceFriendlyName, wcslen(wszDeviceFriendlyName));

	env->ReleaseStringChars(deviceID, (jchar*)wszDeviceID);
	delete wszDeviceFriendlyName;

	return friendlyName;
}