msacm trace and debug patch
Robert Reif
reif at earthlink.net
Sun May 30 21:10:49 CDT 2004
Adds trace and debug printing info.
-------------- next part --------------
Index: dlls/msacm/driver.c
===================================================================
RCS file: /home/wine/wine/dlls/msacm/driver.c,v
retrieving revision 1.24
diff -u -r1.24 driver.c
--- dlls/msacm/driver.c 3 May 2004 20:09:42 -0000 1.24
+++ dlls/msacm/driver.c 31 May 2004 01:56:27 -0000
@@ -49,19 +49,28 @@
MMRESULT WINAPI acmDriverAddA(PHACMDRIVERID phadid, HINSTANCE hinstModule,
LPARAM lParam, DWORD dwPriority, DWORD fdwAdd)
{
- if (!phadid)
+ TRACE("(%p, %p, %08lx, %08lx, %08lx)\n",
+ phadid, hinstModule, lParam, dwPriority, fdwAdd);
+
+ if (!phadid) {
+ WARN("invalid parameter\n");
return MMSYSERR_INVALPARAM;
+ }
/* Check if any unknown flags */
if (fdwAdd &
~(ACM_DRIVERADDF_FUNCTION|ACM_DRIVERADDF_NOTIFYHWND|
- ACM_DRIVERADDF_GLOBAL))
+ ACM_DRIVERADDF_GLOBAL)) {
+ WARN("invalid flag\n");
return MMSYSERR_INVALFLAG;
+ }
/* Check if any incompatible flags */
if ((fdwAdd & ACM_DRIVERADDF_FUNCTION) &&
- (fdwAdd & ACM_DRIVERADDF_NOTIFYHWND))
+ (fdwAdd & ACM_DRIVERADDF_NOTIFYHWND)) {
+ WARN("invalid flag\n");
return MMSYSERR_INVALFLAG;
+ }
/* FIXME: in fact, should GetModuleFileName(hinstModule) and do a
* LoadDriver on it, to be sure we can call SendDriverMessage on the
@@ -98,12 +107,18 @@
PWINE_ACMDRIVERID padid;
PWINE_ACMDRIVER* tpad;
- if (fdwClose)
+ TRACE("(%p, %08lx)\n", had, fdwClose);
+
+ if (fdwClose) {
+ WARN("invalid flag\n");
return MMSYSERR_INVALFLAG;
+ }
pad = MSACM_GetDriver(had);
- if (!pad)
+ if (!pad) {
+ WARN("invalid handle\n");
return MMSYSERR_INVALHANDLE;
+ }
padid = pad->obj.pACMDriverID;
@@ -132,11 +147,17 @@
MMRESULT mmr;
ACMDRIVERDETAILSW addw;
- if (!padd)
+ TRACE("(%p, %p, %08lx)\n", hadid, padd, fdwDetails);
+
+ if (!padd) {
+ WARN("invalid parameter\n");
return MMSYSERR_INVALPARAM;
+ }
- if (padd->cbStruct < 4)
+ if (padd->cbStruct < 4) {
+ WARN("invalid parameter\n");
return MMSYSERR_INVALPARAM;
+ }
addw.cbStruct = sizeof(addw);
mmr = acmDriverDetailsW(hadid, &addw, fdwDetails);
@@ -176,14 +197,22 @@
HACMDRIVER acmDrvr;
MMRESULT mmr;
- if (!padd)
+ TRACE("(%p, %p, %08lx)\n", hadid, padd, fdwDetails);
+
+ if (!padd) {
+ WARN("invalid parameter\n");
return MMSYSERR_INVALPARAM;
+ }
- if (padd->cbStruct < 4)
+ if (padd->cbStruct < 4) {
+ WARN("invalid parameter\n");
return MMSYSERR_INVALPARAM;
+ }
- if (fdwDetails)
+ if (fdwDetails) {
+ WARN("invalid flag\n");
return MMSYSERR_INVALFLAG;
+ }
mmr = acmDriverOpen(&acmDrvr, hadid, 0);
if (mmr == MMSYSERR_NOERROR) {
@@ -205,10 +234,17 @@
PWINE_ACMDRIVERID padid;
DWORD fdwSupport;
- if (!fnCallback) return MMSYSERR_INVALPARAM;
+ TRACE("(%p, %08lx, %08lx)\n", fnCallback, dwInstance, fdwEnum);
- if (fdwEnum & ~(ACM_DRIVERENUMF_NOLOCAL|ACM_DRIVERENUMF_DISABLED))
+ if (!fnCallback) {
+ WARN("invalid parameter\n");
+ return MMSYSERR_INVALPARAM;
+ }
+
+ if (fdwEnum & ~(ACM_DRIVERENUMF_NOLOCAL|ACM_DRIVERENUMF_DISABLED)) {
+ WARN("invalid flag\n");
return MMSYSERR_INVALFLAG;
+ }
for (padid = MSACM_pFirstACMDriverID; padid; padid = padid->pNextACMDriverID) {
fdwSupport = padid->fdwSupport;
@@ -233,15 +269,23 @@
{
PWINE_ACMOBJ pao;
- if (fdwDriverID)
+ TRACE("(%p, %p, %08lx)\n", hao, phadid, fdwDriverID);
+
+ if (fdwDriverID) {
+ WARN("invalid flag\n");
return MMSYSERR_INVALFLAG;
+ }
pao = MSACM_GetObj(hao, WINE_ACMOBJ_DONTCARE);
- if (!pao)
+ if (!pao) {
+ WARN("invalid handle\n");
return MMSYSERR_INVALHANDLE;
+ }
- if (!phadid)
+ if (!phadid) {
+ WARN("invalid parameter\n");
return MMSYSERR_INVALPARAM;
+ }
*phadid = (HACMDRIVERID) pao->pACMDriverID;
@@ -254,11 +298,15 @@
*/
LRESULT WINAPI acmDriverMessage(HACMDRIVER had, UINT uMsg, LPARAM lParam1, LPARAM lParam2)
{
+ TRACE("(%p, %04x, %08lx, %08lx\n", had, uMsg, lParam1, lParam2);
+
if ((uMsg >= ACMDM_USER && uMsg < ACMDM_RESERVED_LOW) ||
uMsg == ACMDM_DRIVER_ABOUT ||
uMsg == DRV_QUERYCONFIGURE ||
uMsg == DRV_CONFIGURE)
return MSACM_Message(had, uMsg, lParam1, lParam2);
+
+ WARN("invalid parameter\n");
return MMSYSERR_INVALPARAM;
}
@@ -273,19 +321,27 @@
TRACE("(%p, %p, %08lu)\n", phad, hadid, fdwOpen);
- if (!phad)
+ if (!phad) {
+ WARN("invalid parameter\n");
return MMSYSERR_INVALPARAM;
+ }
- if (fdwOpen)
+ if (fdwOpen) {
+ WARN("invalid flag\n");
return MMSYSERR_INVALFLAG;
+ }
padid = MSACM_GetDriverID(hadid);
- if (!padid)
+ if (!padid) {
+ WARN("invalid handle\n");
return MMSYSERR_INVALHANDLE;
+ }
pad = HeapAlloc(MSACM_hHeap, 0, sizeof(WINE_ACMDRIVER));
- if (!pad)
+ if (!pad) {
+ WARN("no memory\n");
return MMSYSERR_NOMEM;
+ }
pad->obj.dwType = WINE_ACMOBJ_DRIVER;
pad->obj.pACMDriverID = padid;
@@ -334,6 +390,7 @@
return MMSYSERR_NOERROR;
gotError:
+ WARN("failed: ret = %08x\n", ret);
if (pad && !pad->hDrvr)
HeapFree(MSACM_hHeap, 0, pad);
return ret;
@@ -352,25 +409,35 @@
HKEY hPriorityKey;
DWORD dwPriorityCounter;
+ TRACE("(%p, %08lx, %08lx)\n", hadid, dwPriority, fdwPriority);
+
padid = MSACM_GetDriverID(hadid);
- if (!padid)
+ if (!padid) {
+ WARN("invalid handle\n");
return MMSYSERR_INVALHANDLE;
+ }
/* Check for unknown flags */
if (fdwPriority &
~(ACM_DRIVERPRIORITYF_ENABLE|ACM_DRIVERPRIORITYF_DISABLE|
- ACM_DRIVERPRIORITYF_BEGIN|ACM_DRIVERPRIORITYF_END))
+ ACM_DRIVERPRIORITYF_BEGIN|ACM_DRIVERPRIORITYF_END)) {
+ WARN("invalid flag\n");
return MMSYSERR_INVALFLAG;
+ }
/* Check for incompatible flags */
if ((fdwPriority & ACM_DRIVERPRIORITYF_ENABLE) &&
- (fdwPriority & ACM_DRIVERPRIORITYF_DISABLE))
+ (fdwPriority & ACM_DRIVERPRIORITYF_DISABLE)) {
+ WARN("invalid flag\n");
return MMSYSERR_INVALFLAG;
+ }
/* Check for incompatible flags */
if ((fdwPriority & ACM_DRIVERPRIORITYF_BEGIN) &&
- (fdwPriority & ACM_DRIVERPRIORITYF_END))
+ (fdwPriority & ACM_DRIVERPRIORITYF_END)) {
+ WARN("invalid flag\n");
return MMSYSERR_INVALFLAG;
+ }
lError = RegOpenKeyA(HKEY_CURRENT_USER,
"Software\\Microsoft\\Multimedia\\"
@@ -378,8 +445,10 @@
&hPriorityKey
);
/* FIXME: Create key */
- if (lError != ERROR_SUCCESS)
+ if (lError != ERROR_SUCCESS) {
+ WARN("RegOpenKeyA failed\n");
return MMSYSERR_ERROR;
+ }
for (dwPriorityCounter = 1; ; dwPriorityCounter++) {
snprintf(szSubKey, 17, "Priority%ld", dwPriorityCounter);
@@ -394,6 +463,7 @@
RegCloseKey(hPriorityKey);
+ WARN("RegQueryValueA failed\n");
return MMSYSERR_ERROR;
}
@@ -404,12 +474,18 @@
{
PWINE_ACMDRIVERID padid;
+ TRACE("(%p, %08lx)\n", hadid, fdwRemove);
+
padid = MSACM_GetDriverID(hadid);
- if (!padid)
+ if (!padid) {
+ WARN("invalid handle\n");
return MMSYSERR_INVALHANDLE;
+ }
- if (fdwRemove)
+ if (fdwRemove) {
+ WARN("invalid flag\n");
return MMSYSERR_INVALFLAG;
+ }
MSACM_UnregisterDriver(padid);
More information about the wine-patches
mailing list