aboutsummaryrefslogtreecommitdiff
path: root/Src/Plugins/Library/ml_disc/medium.cpp
blob: 38bfd259b2a061fbd576644e6d3cd517cf5f2aeb (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
#include "./main.h"
#include "./medium.h"
#include "./drive.h"
#include "./resource.h"
//#include <primosdk.h>

static int pType[] = 
{
	IDS_STAMPED_DISC_OR_RECORDABLE_THAT_HAS_BEEN_RECORDED,
    IDS_REWRITEABLE_DISC_HAS_DATA_BUT_KEPT_OPEN_FOR_APPEND,
	IDS_REWRITEABLE_DISC_NOT_POSSIBLE_TO_APPEND_DATA,
	IDS_BLANK_REWRITEABLE_DISC,
};

static int pFormat[] = 
{ 
	IDS_MEDIA_BLANK_DISC,
	IDS_MEDIA_DATA_MODE_1_DAO,
	IDS_MEDIA_KODAK_PHOTO_CD,
	IDS_MEDIA_DATA_MULTISESSION_MODE_1_CLOSED,
	IDS_MEDIA_DATA_MULTISESSION_MODE_2_CLOSED,
	IDS_MEDIA_DATA_MODE_2_DAO,
	IDS_MEDIA_CDRFS,
	IDS_MEDIA_PACKET_WRITING,
	IDS_MEDIA_DATA_MULTISESSION_MODE_1_OPEN,
	IDS_MEDIA_DATA_MULTISESSION_MODE_2_OPEN,
	IDS_MEDIA_AUDIO_DAO_SAO_TAO,
	IDS_MEDIA_AUDIO_REWRITEABLE_DISC_WITH_SESSION_NOT_CLOSED,
	IDS_MEDIA_FIRST_TYPE_OF_ENHANCED_CD_ABORTED,
	IDS_MEDIA_CD_EXTRA,
	IDS_MEDIA_AUDIO_TAO_WITH_SESSION_NOT_WRITTEN,
	IDS_MEDIA_FIRST_TRACK_DATA_OTHERS_AUDIO,
	IDS_MEDIA_MIXED_MODE_MADE_TAO,
	IDS_MEDIA_KODAK_PORTFOLIO,
	IDS_MEDIA_VIDEO_CD,
	IDS_MEDIA_CDi,
	IDS_MEDIA_PLAYSTATION_SONY_GAMES,
	IDS_MEDIA_OBSOLETE,
	IDS_MEDIA_OBSOLETE_FOR_RESTRICTED_OVERWRITE_DVD,
	IDS_MEDIA_DVDROM_OR_CLOSED_RECORDABLE,
	IDS_MEDIA_INCREMENTAL_DVD_WITH_APPENDABLE_ZONE,
	IDS_MEDIA_APPENDABLE_DVD_OF_ANY_TYPE,
	IDS_MEDIA_DVDRAM_CARTRIDGE,
	IDS_MEDIA_CD_OTHER_TYPE,
};

static wchar_t buffer[256];

LPCWSTR Medium_GetTypeString(DWORD nType)
{
	int index = -1;
#if 0
	switch(nType)
	{
		case PRIMOSDK_SILVER:			index = 0; break;
		case PRIMOSDK_COMPLIANTGOLD:		index = 1; break;
		case PRIMOSDK_OTHERGOLD:			index = 2; break;
		case PRIMOSDK_BLANK:				index = 3; break;
	}
#endif
	return WASABI_API_LNGSTRINGW_BUF((-1 != index) ? pType[index] : IDS_UNKNOWN, buffer, 
										sizeof(buffer)/sizeof(wchar_t));
}

LPCWSTR Medium_GetPhysicalTypeString(DWORD nType)
{
	return Drive_GetTypeString(nType);
}

LPCWSTR Medium_GetFormatString(DWORD nFormat)
{
	int index = -1;
#if 0
	switch(nFormat)
	{
		case PRIMOSDK_B1: index = 0; break;
		case PRIMOSDK_D1: index = 1; break;
		case PRIMOSDK_D2: index = 2; break;
		case PRIMOSDK_D3: index = 3; break;
		case PRIMOSDK_D4: index = 4; break;
		case PRIMOSDK_D5: index = 5; break;
		case PRIMOSDK_D6: index = 6; break;
		case PRIMOSDK_D7: index = 7; break;
		case PRIMOSDK_D8: index = 8; break;
		case PRIMOSDK_D9: index = 9; break;
		case PRIMOSDK_A1: index = 10; break;
		case PRIMOSDK_A2: index = 11; break;
		case PRIMOSDK_A3: index = 12; break;
		case PRIMOSDK_A4: index = 13; break;
		case PRIMOSDK_A5: index = 14; break;
		case PRIMOSDK_M1: index = 15; break;
		case PRIMOSDK_M2: index = 16; break;
		case PRIMOSDK_M3: index = 17; break;
		case PRIMOSDK_M4: index = 18; break;
		case PRIMOSDK_M5: index = 19; break;
		case PRIMOSDK_M6: index = 20; break;
		case PRIMOSDK_F1: index = 21; break;
		case PRIMOSDK_F2: index = 22; break;
		case PRIMOSDK_F3: index = 23; break;
		case PRIMOSDK_F4: index = 24; break;
		case PRIMOSDK_F8: index = 25; break;
		case PRIMOSDK_FA: index = 26; break;
		case PRIMOSDK_GENERICCD: index = 27; break;
	}
#endif
	return WASABI_API_LNGSTRINGW_BUF((-1 != index) ? pFormat[index] : IDS_UNKNOWN, buffer, 
										sizeof(buffer)/sizeof(wchar_t));
}

BOOL Medium_IsRecordableType(DWORD nType)
{
	#if 0
	return (PRIMOSDK_COMPLIANTGOLD == nType || PRIMOSDK_BLANK == nType);
#else
	return FALSE;
#endif
}

BOOL Medium_IsRecordable(CHAR cLetter)
{
	wchar_t info[128] = {0};
	wchar_t name[] = L"cda://X.cda";
	DWORD result;
	BOOL reloaded = FALSE;

	name[6] = cLetter;
	
	for(;;)
	{
		result = getFileInfoW(name, L"cdtype", info, sizeof(info)/sizeof(wchar_t));
		if (result || reloaded || !getFileInfoW(name, L"reloadsonic", NULL, 0)) break;
		reloaded = TRUE;
	}
	
	return (result) ? (!lstrcmpW(info, L"CDR") || !lstrcmpW(info, L"CDRW")) : FALSE;
}