devenum: Register DirectSound devices as codec devices.

Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
Zebediah Figura 2018-03-10 22:11:52 -06:00 committed by Alexandre Julliard
parent 5b4a18283b
commit 2f87691892
52 changed files with 232 additions and 462 deletions

View File

@ -1,5 +1,5 @@
MODULE = devenum.dll
IMPORTS = strmiids uuid ole32 oleaut32 avicap32 winmm user32 advapi32
IMPORTS = strmiids uuid ole32 oleaut32 avicap32 winmm user32 advapi32 dsound
DELAYIMPORTS = msvfw32
C_SRCS = \

View File

@ -29,6 +29,7 @@
#include "devenum_private.h"
#include "vfw.h"
#include "aviriff.h"
#include "dsound.h"
#include "wine/debug.h"
#include "wine/unicode.h"
@ -52,7 +53,6 @@ static const WCHAR wszIsRendered[] = {'I','s','R','e','n','d','e','r','e','d',0}
static const WCHAR wszTypes[] = {'T','y','p','e','s',0};
static const WCHAR wszFriendlyName[] = {'F','r','i','e','n','d','l','y','N','a','m','e',0};
static const WCHAR wszWaveInID[] = {'W','a','v','e','I','n','I','D',0};
static const WCHAR wszWaveOutID[] = {'W','a','v','e','O','u','t','I','D',0};
static const WCHAR wszFilterData[] = {'F','i','l','t','e','r','D','a','t','a',0};
static ULONG WINAPI DEVENUM_ICreateDevEnum_AddRef(ICreateDevEnum * iface);
@ -509,6 +509,91 @@ cleanup:
if (hkeyFilter) RegCloseKey(hkeyFilter);
}
static BOOL CALLBACK register_dsound_devices(GUID *guid, const WCHAR *desc, const WCHAR *module, void *context)
{
static const WCHAR defaultW[] = {'D','e','f','a','u','l','t',' ','D','i','r','e','c','t','S','o','u','n','d',' ','D','e','v','i','c','e',0};
static const WCHAR directsoundW[] = {'D','i','r','e','c','t','S','o','u','n','d',':',' ',0};
static const WCHAR dsguidW[] = {'D','S','G','u','i','d',0};
IPropertyBag *prop_bag = NULL;
REGFILTERPINS2 rgpins = {0};
REGPINTYPES rgtypes = {0};
REGFILTER2 rgf = {0};
WCHAR clsid[CHARS_IN_GUID];
IMoniker *mon = NULL;
VARIANT var;
HRESULT hr;
hr = DEVENUM_CreateAMCategoryKey(&CLSID_AudioRendererCategory);
if (FAILED(hr)) goto cleanup;
V_VT(&var) = VT_BSTR;
if (guid)
{
WCHAR *name = heap_alloc(sizeof(defaultW) + strlenW(desc) * sizeof(WCHAR));
if (!name)
goto cleanup;
strcpyW(name, directsoundW);
strcatW(name, desc);
V_BSTR(&var) = SysAllocString(name);
heap_free(name);
}
else
V_BSTR(&var) = SysAllocString(defaultW);
if (!V_BSTR(&var))
goto cleanup;
hr = register_codec(&CLSID_AudioRendererCategory, V_BSTR(&var), &mon);
if (FAILED(hr)) goto cleanup;
hr = IMoniker_BindToStorage(mon, NULL, NULL, &IID_IPropertyBag, (void **)&prop_bag);
if (FAILED(hr)) goto cleanup;
/* write friendly name */
hr = IPropertyBag_Write(prop_bag, wszFriendlyName, &var);
if (FAILED(hr)) goto cleanup;
VariantClear(&var);
/* write clsid */
V_VT(&var) = VT_BSTR;
StringFromGUID2(&CLSID_DSoundRender, clsid, CHARS_IN_GUID);
if (!(V_BSTR(&var) = SysAllocString(clsid)))
goto cleanup;
hr = IPropertyBag_Write(prop_bag, clsid_keyname, &var);
if (FAILED(hr)) goto cleanup;
VariantClear(&var);
/* write filter data */
rgf.dwVersion = 2;
rgf.dwMerit = guid ? MERIT_DO_NOT_USE : MERIT_PREFERRED;
rgf.u.s2.cPins2 = 1;
rgf.u.s2.rgPins2 = &rgpins;
rgpins.dwFlags = REG_PINFLAG_B_RENDERER;
/* FIXME: native registers many more formats */
rgpins.nMediaTypes = 1;
rgpins.lpMediaType = &rgtypes;
rgtypes.clsMajorType = &MEDIATYPE_Audio;
rgtypes.clsMinorType = &MEDIASUBTYPE_PCM;
write_filter_data(prop_bag, &rgf);
/* write DSound guid */
V_VT(&var) = VT_BSTR;
StringFromGUID2(guid ? guid : &GUID_NULL, clsid, CHARS_IN_GUID);
if (!(V_BSTR(&var) = SysAllocString(clsid)))
goto cleanup;
hr = IPropertyBag_Write(prop_bag, dsguidW, &var);
if (FAILED(hr)) goto cleanup;
cleanup:
VariantClear(&var);
if (prop_bag) IPropertyBag_Release(prop_bag);
if (mon) IMoniker_Release(mon);
return TRUE;
}
/**********************************************************************
* DEVENUM_ICreateDevEnum_CreateClassEnumerator
*/
@ -518,6 +603,8 @@ static HRESULT WINAPI DEVENUM_ICreateDevEnum_CreateClassEnumerator(
IEnumMoniker **ppEnumMoniker,
DWORD dwFlags)
{
HRESULT hr;
TRACE("(%p)->(%s, %p, %x)\n", iface, debugstr_guid(clsidDeviceClass), ppEnumMoniker, dwFlags);
if (!ppEnumMoniker)
@ -527,6 +614,8 @@ static HRESULT WINAPI DEVENUM_ICreateDevEnum_CreateClassEnumerator(
register_codecs();
register_legacy_filters();
hr = DirectSoundEnumerateW(&register_dsound_devices, NULL);
if (FAILED(hr)) return hr;
return create_EnumMoniker(clsidDeviceClass, ppEnumMoniker);
}
@ -620,8 +709,6 @@ static void register_vfw_codecs(void)
static HRESULT register_codecs(void)
{
HRESULT res;
WCHAR szDSoundNameFormat[MAX_PATH + 1];
WCHAR szDSoundName[MAX_PATH + 1];
WCHAR class[CHARS_IN_GUID];
DWORD iDefaultDevice = -1;
UINT numDevs;
@ -657,12 +744,6 @@ static HRESULT register_codecs(void)
rfp2.lpMedium = NULL;
rfp2.clsPinCategory = &IID_NULL;
if (!LoadStringW(DEVENUM_hInstance, IDS_DEVENUM_DS, szDSoundNameFormat, sizeof(szDSoundNameFormat)/sizeof(szDSoundNameFormat[0])-1))
{
ERR("Couldn't get string resource (GetLastError() is %d)\n", GetLastError());
return HRESULT_FROM_WIN32(GetLastError());
}
res = CoCreateInstance(&CLSID_FilterMapper2, NULL, CLSCTX_INPROC,
&IID_IFilterMapper2, (void **) &pMapper);
/*
@ -713,37 +794,6 @@ static HRESULT register_codecs(void)
wocaps.szPname,
&rf2);
if (pMoniker)
{
VARIANT var;
V_VT(&var) = VT_I4;
V_I4(&var) = i;
res = IMoniker_BindToStorage(pMoniker, NULL, NULL, &IID_IPropertyBag, (LPVOID)&pPropBag);
if (SUCCEEDED(res))
res = IPropertyBag_Write(pPropBag, wszWaveOutID, &var);
else
pPropBag = NULL;
V_VT(&var) = VT_LPWSTR;
V_BSTR(&var) = wocaps.szPname;
if (SUCCEEDED(res))
res = IPropertyBag_Write(pPropBag, wszFriendlyName, &var);
if (pPropBag)
IPropertyBag_Release(pPropBag);
IMoniker_Release(pMoniker);
pMoniker = NULL;
}
wsprintfW(szDSoundName, szDSoundNameFormat, wocaps.szPname);
res = IFilterMapper2_RegisterFilter(pMapper,
&CLSID_DSoundRender,
szDSoundName,
&pMoniker,
&CLSID_AudioRendererCategory,
szDSoundName,
&rf2);
/* FIXME: do additional stuff with IMoniker here, depending on what RegisterFilter does */
if (pMoniker)

View File

@ -29,8 +29,6 @@ LANGUAGE LANG_ENGLISH, SUBLANG_DEFAULT
STRINGTABLE
{
IDS_DEVENUM_DSDEFAULT "Default DirectSound"
IDS_DEVENUM_DS "DirectSound: %s"
IDS_DEVENUM_WODEFAULT "Default WaveOut Device"
IDS_DEVENUM_MIDEFAULT "Default MidiOut Device"
}

View File

@ -101,8 +101,6 @@ extern const WCHAR clsid_keyname[6] DECLSPEC_HIDDEN;
/**********************************************************************
* Resource IDs
*/
#define IDS_DEVENUM_DSDEFAULT 7
#define IDS_DEVENUM_DS 8
#define IDS_DEVENUM_WODEFAULT 9
#define IDS_DEVENUM_MIDEFAULT 10
#define IDS_DEVENUM_KSDEFAULT 11

View File

@ -1,5 +1,5 @@
TESTDLL = devenum.dll
IMPORTS = oleaut32 ole32 advapi32
IMPORTS = advapi32 dsound oleaut32 ole32
C_SRCS = \
devenum.c

View File

@ -28,6 +28,10 @@
#include "strmif.h"
#include "uuids.h"
#include "vfwmsgs.h"
#include "mmsystem.h"
#include "dsound.h"
DEFINE_GUID(GUID_NULL,0,0,0,0,0,0,0,0,0,0,0);
static const WCHAR friendly_name[] = {'F','r','i','e','n','d','l','y','N','a','m','e',0};
static const WCHAR fcc_handlerW[] = {'F','c','c','H','a','n','d','l','e','r',0};
@ -526,6 +530,94 @@ end:
IParseDisplayName_Release(parser);
}
static BOOL CALLBACK test_dsound(GUID *guid, const WCHAR *desc, const WCHAR *module, void *context)
{
static const WCHAR defaultW[] = {'D','e','f','a','u','l','t',' ','D','i','r','e','c','t','S','o','u','n','d',' ','D','e','v','i','c','e',0};
static const WCHAR directsoundW[] = {'D','i','r','e','c','t','S','o','u','n','d',':',' ',0};
static const WCHAR dsguidW[] = {'D','S','G','u','i','d',0};
IParseDisplayName *parser;
IPropertyBag *prop_bag;
IMoniker *mon;
WCHAR buffer[200];
WCHAR name[200];
VARIANT var;
HRESULT hr;
if (guid)
{
lstrcpyW(name, directsoundW);
lstrcatW(name, desc);
}
else
{
lstrcpyW(name, defaultW);
guid = (GUID *)&GUID_NULL;
}
hr = CoCreateInstance(&CLSID_CDeviceMoniker, NULL, CLSCTX_INPROC, &IID_IParseDisplayName, (void **)&parser);
ok(hr == S_OK, "Failed to create ParseDisplayName: %#x\n", hr);
lstrcpyW(buffer, deviceW);
lstrcatW(buffer, cmW);
StringFromGUID2(&CLSID_AudioRendererCategory, buffer + lstrlenW(buffer), CHARS_IN_GUID);
lstrcatW(buffer, backslashW);
lstrcatW(buffer, name);
mon = check_display_name(parser, buffer);
hr = IMoniker_BindToStorage(mon, NULL, NULL, &IID_IPropertyBag, (void **)&prop_bag);
ok(hr == S_OK, "BindToStorage failed: %#x\n", hr);
VariantInit(&var);
hr = IPropertyBag_Read(prop_bag, friendly_name, &var, NULL);
if (hr == HRESULT_FROM_WIN32(ERROR_FILE_NOT_FOUND))
{
/* Win8+ uses the GUID instead of the device name */
IPropertyBag_Release(prop_bag);
IMoniker_Release(mon);
lstrcpyW(buffer, deviceW);
lstrcatW(buffer, cmW);
StringFromGUID2(&CLSID_AudioRendererCategory, buffer + lstrlenW(buffer), CHARS_IN_GUID);
lstrcatW(buffer, backslashW);
lstrcatW(buffer, directsoundW);
StringFromGUID2(guid, buffer + lstrlenW(buffer) - 1, CHARS_IN_GUID);
mon = check_display_name(parser, buffer);
hr = IMoniker_BindToStorage(mon, NULL, NULL, &IID_IPropertyBag, (void **)&prop_bag);
ok(hr == S_OK, "BindToStorage failed: %#x\n", hr);
VariantInit(&var);
hr = IPropertyBag_Read(prop_bag, friendly_name, &var, NULL);
}
ok(hr == S_OK, "Read failed: %#x\n", hr);
ok(!lstrcmpW(name, V_BSTR(&var)), "expected %s, got %s\n",
wine_dbgstr_w(name), wine_dbgstr_w(V_BSTR(&var)));
VariantClear(&var);
hr = IPropertyBag_Read(prop_bag, clsidW, &var, NULL);
ok(hr == S_OK, "Read failed: %#x\n", hr);
StringFromGUID2(&CLSID_DSoundRender, buffer, CHARS_IN_GUID);
ok(!lstrcmpW(buffer, V_BSTR(&var)), "expected %s, got %s\n",
wine_dbgstr_w(buffer), wine_dbgstr_w(V_BSTR(&var)));
VariantClear(&var);
hr = IPropertyBag_Read(prop_bag, dsguidW, &var, NULL);
ok(hr == S_OK, "Read failed: %#x\n", hr);
StringFromGUID2(guid, buffer, CHARS_IN_GUID);
ok(!lstrcmpW(buffer, V_BSTR(&var)), "expected %s, got %s\n",
wine_dbgstr_w(buffer), wine_dbgstr_w(V_BSTR(&var)));
IPropertyBag_Release(prop_bag);
IMoniker_Release(mon);
IParseDisplayName_Release(parser);
return TRUE;
}
START_TEST(devenum)
{
IBindCtx *bind_ctx = NULL;
@ -549,6 +641,8 @@ START_TEST(devenum)
test_codec();
test_legacy_filter();
hr = DirectSoundEnumerateW(test_dsound, NULL);
ok(hr == S_OK, "got %#x\n", hr);
CoUninitialize();
}

View File

@ -2933,18 +2933,10 @@ msgid "Note: The private key for this certificate is not exportable."
msgstr "ملاحظة : لا يمكن تصدير المفتاح الخاص لهذه الشهادة."
#: devenum.rc:33
msgid "Default DirectSound"
msgstr "مخدم الصّوت الافتراضي"
#: devenum.rc:34
msgid "DirectSound: %s"
msgstr "مخدم الصوت: %s"
#: devenum.rc:35
msgid "Default WaveOut Device"
msgstr "الجهاز الافتراضي لإخراج الموجات"
#: devenum.rc:36
#: devenum.rc:34
msgid "Default MidiOut Device"
msgstr "الجهاز الافتراضي لإخراج النوطات"

View File

@ -2924,18 +2924,10 @@ msgid "Note: The private key for this certificate is not exportable."
msgstr ""
#: devenum.rc:33
msgid "Default DirectSound"
msgstr ""
#: devenum.rc:34
msgid "DirectSound: %s"
msgstr ""
#: devenum.rc:35
msgid "Default WaveOut Device"
msgstr ""
#: devenum.rc:36
#: devenum.rc:34
msgid "Default MidiOut Device"
msgstr ""

View File

@ -2959,18 +2959,10 @@ msgid "Note: The private key for this certificate is not exportable."
msgstr "Nota: La clau privada d'aquest certificat no és exportable."
#: devenum.rc:33
msgid "Default DirectSound"
msgstr "DirectSound per defecte"
#: devenum.rc:34
msgid "DirectSound: %s"
msgstr "DirectSound: %s"
#: devenum.rc:35
msgid "Default WaveOut Device"
msgstr "Dispositiu de WaveOut per defecte"
#: devenum.rc:36
#: devenum.rc:34
msgid "Default MidiOut Device"
msgstr "Dispositiu de MidiOut per defecte"

View File

@ -2885,18 +2885,10 @@ msgid "Note: The private key for this certificate is not exportable."
msgstr "Poznámka: Soukromou část klíče tohoto certifikátu nelze exportovat."
#: devenum.rc:33
msgid "Default DirectSound"
msgstr "Výchozí DirectSound"
#: devenum.rc:34
msgid "DirectSound: %s"
msgstr "DirectSound: %s"
#: devenum.rc:35
msgid "Default WaveOut Device"
msgstr "Standardní zařízení WaveOut"
#: devenum.rc:36
#: devenum.rc:34
msgid "Default MidiOut Device"
msgstr "Standardní zařízení MidiOut"

View File

@ -2962,18 +2962,10 @@ msgid "Note: The private key for this certificate is not exportable."
msgstr "Bemærk: Den private nøgle for dette certifikat kan ikke eksporteres."
#: devenum.rc:33
msgid "Default DirectSound"
msgstr "Standard DirectSound"
#: devenum.rc:34
msgid "DirectSound: %s"
msgstr "DirectSound: %s"
#: devenum.rc:35
msgid "Default WaveOut Device"
msgstr "Standard WaveOut Enhed"
#: devenum.rc:36
#: devenum.rc:34
msgid "Default MidiOut Device"
msgstr "Standard MidiOut Enhed"

View File

@ -2948,18 +2948,10 @@ msgstr ""
"Hinweis: Der private Schlüssel des Zertifikats kann nicht exportiert werden."
#: devenum.rc:33
msgid "Default DirectSound"
msgstr "Standard DirectSound"
#: devenum.rc:34
msgid "DirectSound: %s"
msgstr "DirectSound: %s"
#: devenum.rc:35
msgid "Default WaveOut Device"
msgstr "Standard WaveOut-Gerät"
#: devenum.rc:36
#: devenum.rc:34
msgid "Default MidiOut Device"
msgstr "Standard MidiOut-Gerät"

View File

@ -2871,18 +2871,10 @@ msgid "Note: The private key for this certificate is not exportable."
msgstr ""
#: devenum.rc:33
msgid "Default DirectSound"
msgstr ""
#: devenum.rc:34
msgid "DirectSound: %s"
msgstr ""
#: devenum.rc:35
msgid "Default WaveOut Device"
msgstr ""
#: devenum.rc:36
#: devenum.rc:34
msgid "Default MidiOut Device"
msgstr ""

View File

@ -2942,18 +2942,10 @@ msgid "Note: The private key for this certificate is not exportable."
msgstr "Note: The private key for this certificate is not exportable."
#: devenum.rc:33
msgid "Default DirectSound"
msgstr "Default DirectSound"
#: devenum.rc:34
msgid "DirectSound: %s"
msgstr "DirectSound: %s"
#: devenum.rc:35
msgid "Default WaveOut Device"
msgstr "Default WaveOut Device"
#: devenum.rc:36
#: devenum.rc:34
msgid "Default MidiOut Device"
msgstr "Default MidiOut Device"

View File

@ -2942,18 +2942,10 @@ msgid "Note: The private key for this certificate is not exportable."
msgstr "Note: The private key for this certificate is not exportable."
#: devenum.rc:33
msgid "Default DirectSound"
msgstr "Default DirectSound"
#: devenum.rc:34
msgid "DirectSound: %s"
msgstr "DirectSound: %s"
#: devenum.rc:35
msgid "Default WaveOut Device"
msgstr "Default WaveOut Device"
#: devenum.rc:36
#: devenum.rc:34
msgid "Default MidiOut Device"
msgstr "Default MidiOut Device"

View File

@ -2865,18 +2865,10 @@ msgid "Note: The private key for this certificate is not exportable."
msgstr ""
#: devenum.rc:33
msgid "Default DirectSound"
msgstr ""
#: devenum.rc:34
msgid "DirectSound: %s"
msgstr ""
#: devenum.rc:35
msgid "Default WaveOut Device"
msgstr ""
#: devenum.rc:36
#: devenum.rc:34
msgid "Default MidiOut Device"
msgstr ""

View File

@ -2971,18 +2971,10 @@ msgid "Note: The private key for this certificate is not exportable."
msgstr "Nota: La clave privada de este certificado no es exportable."
#: devenum.rc:33
msgid "Default DirectSound"
msgstr "DirectSound por defecto"
#: devenum.rc:34
msgid "DirectSound: %s"
msgstr "DirectSound: %s"
#: devenum.rc:35
msgid "Default WaveOut Device"
msgstr "Dispositivo WaveOut por defecto"
#: devenum.rc:36
#: devenum.rc:34
msgid "Default MidiOut Device"
msgstr "Dispositivo MidiOut por defecto"

View File

@ -2912,18 +2912,10 @@ msgid "Note: The private key for this certificate is not exportable."
msgstr ""
#: devenum.rc:33
msgid "Default DirectSound"
msgstr ""
#: devenum.rc:34
msgid "DirectSound: %s"
msgstr ""
#: devenum.rc:35
msgid "Default WaveOut Device"
msgstr ""
#: devenum.rc:36
#: devenum.rc:34
msgid "Default MidiOut Device"
msgstr ""

View File

@ -2936,18 +2936,10 @@ msgid "Note: The private key for this certificate is not exportable."
msgstr "Huomio: Tämän varmenteen yksityistä avainta ei voi viedä."
#: devenum.rc:33
msgid "Default DirectSound"
msgstr "DirectSound-oletus"
#: devenum.rc:34
msgid "DirectSound: %s"
msgstr "DirectSound: %s"
#: devenum.rc:35
msgid "Default WaveOut Device"
msgstr "WaveOut-oletuslaite"
#: devenum.rc:36
#: devenum.rc:34
msgid "Default MidiOut Device"
msgstr "MidiOut-oletuslaite"

View File

@ -2963,18 +2963,10 @@ msgid "Note: The private key for this certificate is not exportable."
msgstr "Note : la clé privée de ce certificat n'est pas exportable."
#: devenum.rc:33
msgid "Default DirectSound"
msgstr "DirectSound par défaut"
#: devenum.rc:34
msgid "DirectSound: %s"
msgstr "DirectSound : %s"
#: devenum.rc:35
msgid "Default WaveOut Device"
msgstr "Périphérique WaveOut par défaut"
#: devenum.rc:36
#: devenum.rc:34
msgid "Default MidiOut Device"
msgstr "Périphérique MidiOut par défaut"

View File

@ -2935,20 +2935,10 @@ msgstr "לתשומת לבך: המפתח הפרטי לאישור זה אינו נ
#: devenum.rc:33
#, fuzzy
msgid "Default DirectSound"
msgstr "DirectSound כבררת מחדל"
#: devenum.rc:34
#, fuzzy
msgid "DirectSound: %s"
msgstr "DirectSound: %s"
#: devenum.rc:35
#, fuzzy
msgid "Default WaveOut Device"
msgstr "התקן ה־WaveOut כבררת מחדל"
#: devenum.rc:36
#: devenum.rc:34
#, fuzzy
msgid "Default MidiOut Device"
msgstr "התקן ה־MidiOut כבררת מחדל"

View File

@ -2856,18 +2856,10 @@ msgid "Note: The private key for this certificate is not exportable."
msgstr ""
#: devenum.rc:33
msgid "Default DirectSound"
msgstr ""
#: devenum.rc:34
msgid "DirectSound: %s"
msgstr ""
#: devenum.rc:35
msgid "Default WaveOut Device"
msgstr ""
#: devenum.rc:36
#: devenum.rc:34
msgid "Default MidiOut Device"
msgstr ""

View File

@ -2936,18 +2936,10 @@ msgid "Note: The private key for this certificate is not exportable."
msgstr "Napomena: Privatan ključ za ovaj certifikat se ne može izvesti."
#: devenum.rc:33
msgid "Default DirectSound"
msgstr "Podrazumijevani DirectSound"
#: devenum.rc:34
msgid "DirectSound: %s"
msgstr "DirectSound: %s"
#: devenum.rc:35
msgid "Default WaveOut Device"
msgstr "Podrazumijevani WaveOut uređaj"
#: devenum.rc:36
#: devenum.rc:34
msgid "Default MidiOut Device"
msgstr "Podrazumijevani MidiOut uređaj"

View File

@ -2976,18 +2976,10 @@ msgid "Note: The private key for this certificate is not exportable."
msgstr "Üzenet: A tanúsítványhoz tartozó privát kulcsok nem exportálhatóak."
#: devenum.rc:33
msgid "Default DirectSound"
msgstr "Alapértelmezett DirectSound"
#: devenum.rc:34
msgid "DirectSound: %s"
msgstr "DirectSound: %s"
#: devenum.rc:35
msgid "Default WaveOut Device"
msgstr "Alapértelmezett WaveOut eszköz"
#: devenum.rc:36
#: devenum.rc:34
msgid "Default MidiOut Device"
msgstr "Alapértelmezett MidiOut eszköz"

View File

@ -2986,18 +2986,10 @@ msgid "Note: The private key for this certificate is not exportable."
msgstr "Nota: la chiave privata per questo certificato non è esportabile."
#: devenum.rc:33
msgid "Default DirectSound"
msgstr "DirectSound predefinito"
#: devenum.rc:34
msgid "DirectSound: %s"
msgstr "DirectSound: %s"
#: devenum.rc:35
msgid "Default WaveOut Device"
msgstr "Dispositivo WaveOut predefinito"
#: devenum.rc:36
#: devenum.rc:34
msgid "Default MidiOut Device"
msgstr "Dispositivo MidiOut predefinito"

View File

@ -2936,18 +2936,10 @@ msgid "Note: The private key for this certificate is not exportable."
msgstr "注意: この証明書の秘密鍵はエクスポートできません。"
#: devenum.rc:33
msgid "Default DirectSound"
msgstr "デフォルト DirectSound"
#: devenum.rc:34
msgid "DirectSound: %s"
msgstr "DirectSound: %s"
#: devenum.rc:35
msgid "Default WaveOut Device"
msgstr "デフォルト WaveOut デバイス"
#: devenum.rc:36
#: devenum.rc:34
msgid "Default MidiOut Device"
msgstr "デフォルト MidiOut デバイス"

View File

@ -2941,18 +2941,10 @@ msgid "Note: The private key for this certificate is not exportable."
msgstr "주의: 이 인증서를 위한 개인 키를 내보낼 수 없습니다."
#: devenum.rc:33
msgid "Default DirectSound"
msgstr "기본 다이렉트 사운드"
#: devenum.rc:34
msgid "DirectSound: %s"
msgstr "다이렉트 사운드: %s"
#: devenum.rc:35
msgid "Default WaveOut Device"
msgstr "기본 웨이브 출력 장치"
#: devenum.rc:36
#: devenum.rc:34
msgid "Default MidiOut Device"
msgstr "기본 미디출력 장치"

View File

@ -2945,18 +2945,10 @@ msgid "Note: The private key for this certificate is not exportable."
msgstr "Pastaba: šio liudijimo privatusis raktas neišeksportuojamas."
#: devenum.rc:33
msgid "Default DirectSound"
msgstr "Numatytasis „DirectSound“"
#: devenum.rc:34
msgid "DirectSound: %s"
msgstr "„DirectSound“: %s"
#: devenum.rc:35
msgid "Default WaveOut Device"
msgstr "Numatytasis „WaveOut“ įrenginys"
#: devenum.rc:36
#: devenum.rc:34
msgid "Default MidiOut Device"
msgstr "Numatytasis „MidiOut“ įrenginys"

View File

@ -2856,18 +2856,10 @@ msgid "Note: The private key for this certificate is not exportable."
msgstr ""
#: devenum.rc:33
msgid "Default DirectSound"
msgstr ""
#: devenum.rc:34
msgid "DirectSound: %s"
msgstr ""
#: devenum.rc:35
msgid "Default WaveOut Device"
msgstr ""
#: devenum.rc:36
#: devenum.rc:34
msgid "Default MidiOut Device"
msgstr ""

View File

@ -2947,18 +2947,10 @@ msgstr ""
"Merk: Den private nøkkelen for dette sertifikatet kan ikke eksporteres."
#: devenum.rc:33
msgid "Default DirectSound"
msgstr "Standard DirectSound"
#: devenum.rc:34
msgid "DirectSound: %s"
msgstr "DirectSound: %s"
#: devenum.rc:35
msgid "Default WaveOut Device"
msgstr "Standard enhet for lydavspilling"
#: devenum.rc:36
#: devenum.rc:34
msgid "Default MidiOut Device"
msgstr "Standard enhet for MIDI-avspilling"

View File

@ -2970,18 +2970,10 @@ msgstr ""
"worden."
#: devenum.rc:33
msgid "Default DirectSound"
msgstr "Standaard DirectSound"
#: devenum.rc:34
msgid "DirectSound: %s"
msgstr "DirectSound: %s"
#: devenum.rc:35
msgid "Default WaveOut Device"
msgstr "Standaardapparaat WaveOut"
#: devenum.rc:36
#: devenum.rc:34
msgid "Default MidiOut Device"
msgstr "Standaardapparaat MidiOut"

View File

@ -2856,18 +2856,10 @@ msgid "Note: The private key for this certificate is not exportable."
msgstr ""
#: devenum.rc:33
msgid "Default DirectSound"
msgstr ""
#: devenum.rc:34
msgid "DirectSound: %s"
msgstr ""
#: devenum.rc:35
msgid "Default WaveOut Device"
msgstr ""
#: devenum.rc:36
#: devenum.rc:34
msgid "Default MidiOut Device"
msgstr ""

View File

@ -2856,18 +2856,10 @@ msgid "Note: The private key for this certificate is not exportable."
msgstr ""
#: devenum.rc:33
msgid "Default DirectSound"
msgstr ""
#: devenum.rc:34
msgid "DirectSound: %s"
msgstr ""
#: devenum.rc:35
msgid "Default WaveOut Device"
msgstr ""
#: devenum.rc:36
#: devenum.rc:34
msgid "Default MidiOut Device"
msgstr ""

View File

@ -2959,18 +2959,10 @@ msgstr ""
"eksportu."
#: devenum.rc:33
msgid "Default DirectSound"
msgstr "Domyślne DirectSound"
#: devenum.rc:34
msgid "DirectSound: %s"
msgstr "DirectSound: %s"
#: devenum.rc:35
msgid "Default WaveOut Device"
msgstr "Standardowe urządzenie WaveOut"
#: devenum.rc:36
#: devenum.rc:34
msgid "Default MidiOut Device"
msgstr "Standardowe urządzenie Device"

View File

@ -2953,18 +2953,10 @@ msgid "Note: The private key for this certificate is not exportable."
msgstr "Nota: A chave privada para este certificado não é exportável."
#: devenum.rc:33
msgid "Default DirectSound"
msgstr "DirectSound padrão"
#: devenum.rc:34
msgid "DirectSound: %s"
msgstr "DirectSound: %s"
#: devenum.rc:35
msgid "Default WaveOut Device"
msgstr "Dispositivo padrão WaveOut"
#: devenum.rc:36
#: devenum.rc:34
msgid "Default MidiOut Device"
msgstr "Dispositivo padrão MidiOut"

View File

@ -2964,18 +2964,10 @@ msgid "Note: The private key for this certificate is not exportable."
msgstr "Nota: A chave privada para este certificado não é exportável."
#: devenum.rc:33
msgid "Default DirectSound"
msgstr "DirectSound pré-definido"
#: devenum.rc:34
msgid "DirectSound: %s"
msgstr "DirectSound: %s"
#: devenum.rc:35
msgid "Default WaveOut Device"
msgstr "Dispositivo pré-definido WaveOut"
#: devenum.rc:36
#: devenum.rc:34
msgid "Default MidiOut Device"
msgstr "Dispositivo pré-definido MidiOut"

View File

@ -2880,18 +2880,10 @@ msgid "Note: The private key for this certificate is not exportable."
msgstr ""
#: devenum.rc:33
msgid "Default DirectSound"
msgstr ""
#: devenum.rc:34
msgid "DirectSound: %s"
msgstr ""
#: devenum.rc:35
msgid "Default WaveOut Device"
msgstr ""
#: devenum.rc:36
#: devenum.rc:34
msgid "Default MidiOut Device"
msgstr ""

View File

@ -2933,18 +2933,10 @@ msgid "Note: The private key for this certificate is not exportable."
msgstr "Notă: Cheia privată pentru acest certificat nu este exportabilă."
#: devenum.rc:33
msgid "Default DirectSound"
msgstr "DirectSound implicit"
#: devenum.rc:34
msgid "DirectSound: %s"
msgstr "DirectSound: %s"
#: devenum.rc:35
msgid "Default WaveOut Device"
msgstr "Dispozitiv WaveOut implicit"
#: devenum.rc:36
#: devenum.rc:34
msgid "Default MidiOut Device"
msgstr "Dispozitiv MidiOut implicit"

View File

@ -2948,18 +2948,10 @@ msgid "Note: The private key for this certificate is not exportable."
msgstr "Примечание: закрытый ключ этого сертификата не экспортируемый."
#: devenum.rc:33
msgid "Default DirectSound"
msgstr "Стандартный DirectSound"
#: devenum.rc:34
msgid "DirectSound: %s"
msgstr "DirectSound: %s"
#: devenum.rc:35
msgid "Default WaveOut Device"
msgstr "Звуковое устройство вывода по умолчанию"
#: devenum.rc:36
#: devenum.rc:34
msgid "Default MidiOut Device"
msgstr "Устройство вывода MIDI по умолчанию"

View File

@ -2890,18 +2890,10 @@ msgid "Note: The private key for this certificate is not exportable."
msgstr ""
#: devenum.rc:33
msgid "Default DirectSound"
msgstr ""
#: devenum.rc:34
msgid "DirectSound: %s"
msgstr ""
#: devenum.rc:35
msgid "Default WaveOut Device"
msgstr ""
#: devenum.rc:36
#: devenum.rc:34
msgid "Default MidiOut Device"
msgstr ""

View File

@ -2980,18 +2980,10 @@ msgid "Note: The private key for this certificate is not exportable."
msgstr "Opomba: zasebnega ključa za to potrdilo ni mogoče izvoziti."
#: devenum.rc:33
msgid "Default DirectSound"
msgstr "Privzeta naprava DirectSound"
#: devenum.rc:34
msgid "DirectSound: %s"
msgstr "DirectSound: %s"
#: devenum.rc:35
msgid "Default WaveOut Device"
msgstr "Privzeta naprava WaveOut"
#: devenum.rc:36
#: devenum.rc:34
msgid "Default MidiOut Device"
msgstr "Privzeta naprava MidiOut"

View File

@ -2937,18 +2937,10 @@ msgid "Note: The private key for this certificate is not exportable."
msgstr ""
#: devenum.rc:33
msgid "Default DirectSound"
msgstr "Подразумевани DirectSound"
#: devenum.rc:34
msgid "DirectSound: %s"
msgstr "DirectSound: %s"
#: devenum.rc:35
msgid "Default WaveOut Device"
msgstr "Подразумевани WaveOut уређај"
#: devenum.rc:36
#: devenum.rc:34
msgid "Default MidiOut Device"
msgstr "Подразумевани MidiOut уређај"

View File

@ -3015,18 +3015,10 @@ msgid "Note: The private key for this certificate is not exportable."
msgstr ""
#: devenum.rc:33
msgid "Default DirectSound"
msgstr "Podrazumevani DirectSound"
#: devenum.rc:34
msgid "DirectSound: %s"
msgstr "DirectSound: %s"
#: devenum.rc:35
msgid "Default WaveOut Device"
msgstr "Podrazumevani WaveOut uređaj"
#: devenum.rc:36
#: devenum.rc:34
msgid "Default MidiOut Device"
msgstr "Podrazumevani MidiOut uređaj"

View File

@ -2943,18 +2943,10 @@ msgid "Note: The private key for this certificate is not exportable."
msgstr "Obs: Den privata nyckeln för detta certifikat kan inte exporteras."
#: devenum.rc:33
msgid "Default DirectSound"
msgstr "Förvalt DirectSound"
#: devenum.rc:34
msgid "DirectSound: %s"
msgstr "DirectSound: %s"
#: devenum.rc:35
msgid "Default WaveOut Device"
msgstr "Förvald WaveOut-enhet"
#: devenum.rc:36
#: devenum.rc:34
msgid "Default MidiOut Device"
msgstr "Förvald MidiOut-enhet"

View File

@ -2856,18 +2856,10 @@ msgid "Note: The private key for this certificate is not exportable."
msgstr ""
#: devenum.rc:33
msgid "Default DirectSound"
msgstr ""
#: devenum.rc:34
msgid "DirectSound: %s"
msgstr ""
#: devenum.rc:35
msgid "Default WaveOut Device"
msgstr ""
#: devenum.rc:36
#: devenum.rc:34
msgid "Default MidiOut Device"
msgstr ""

View File

@ -2887,18 +2887,10 @@ msgid "Note: The private key for this certificate is not exportable."
msgstr ""
#: devenum.rc:33
msgid "Default DirectSound"
msgstr ""
#: devenum.rc:34
msgid "DirectSound: %s"
msgstr ""
#: devenum.rc:35
msgid "Default WaveOut Device"
msgstr ""
#: devenum.rc:36
#: devenum.rc:34
msgid "Default MidiOut Device"
msgstr ""

View File

@ -2943,18 +2943,10 @@ msgid "Note: The private key for this certificate is not exportable."
msgstr "Not: Bu sertifika için özel anahtar aktarılamaz."
#: devenum.rc:33
msgid "Default DirectSound"
msgstr "Varsayılan DirectSound"
#: devenum.rc:34
msgid "DirectSound: %s"
msgstr "DirectSound: %s"
#: devenum.rc:35
msgid "Default WaveOut Device"
msgstr "Varsayılan WaveOut Aygıtı"
#: devenum.rc:36
#: devenum.rc:34
msgid "Default MidiOut Device"
msgstr "Varsayılan MidiOut Aygıtı"

View File

@ -2944,18 +2944,10 @@ msgstr ""
"Увага: Приватний ключ для цього сертифікату не може бути експортований."
#: devenum.rc:33
msgid "Default DirectSound"
msgstr "DirectSound за замовчуванням"
#: devenum.rc:34
msgid "DirectSound: %s"
msgstr "DirectSound: %s"
#: devenum.rc:35
msgid "Default WaveOut Device"
msgstr "Звуковий пристрій виводу за замовчуванням"
#: devenum.rc:36
#: devenum.rc:34
msgid "Default MidiOut Device"
msgstr "Пристрій виводу Midi за замовчуванням"

View File

@ -2900,18 +2900,10 @@ msgid "Note: The private key for this certificate is not exportable."
msgstr ""
#: devenum.rc:33
msgid "Default DirectSound"
msgstr ""
#: devenum.rc:34
msgid "DirectSound: %s"
msgstr ""
#: devenum.rc:35
msgid "Default WaveOut Device"
msgstr ""
#: devenum.rc:36
#: devenum.rc:34
msgid "Default MidiOut Device"
msgstr ""

View File

@ -2828,18 +2828,10 @@ msgid "Note: The private key for this certificate is not exportable."
msgstr ""
#: devenum.rc:33
msgid "Default DirectSound"
msgstr ""
#: devenum.rc:34
msgid "DirectSound: %s"
msgstr ""
#: devenum.rc:35
msgid "Default WaveOut Device"
msgstr ""
#: devenum.rc:36
#: devenum.rc:34
msgid "Default MidiOut Device"
msgstr ""

View File

@ -2894,18 +2894,10 @@ msgid "Note: The private key for this certificate is not exportable."
msgstr "注意:证书的私钥不可导出。"
#: devenum.rc:33
msgid "Default DirectSound"
msgstr "默认 DirectSound"
#: devenum.rc:34
msgid "DirectSound: %s"
msgstr "DirectSound%s"
#: devenum.rc:35
msgid "Default WaveOut Device"
msgstr "默认 WaveOut 设备"
#: devenum.rc:36
#: devenum.rc:34
msgid "Default MidiOut Device"
msgstr "默认 MidiOut 设备"

View File

@ -2906,18 +2906,10 @@ msgid "Note: The private key for this certificate is not exportable."
msgstr "註記:用於這個憑證的私鑰不可匯出。"
#: devenum.rc:33
msgid "Default DirectSound"
msgstr "預設 DirectSound 裝置"
#: devenum.rc:34
msgid "DirectSound: %s"
msgstr "DirectSound%s"
#: devenum.rc:35
msgid "Default WaveOut Device"
msgstr "預設 WaveOut 裝置"
#: devenum.rc:36
#: devenum.rc:34
msgid "Default MidiOut Device"
msgstr "預設 MidiOut 裝置"