- add handler for VCD VxD ("virtual comm device" ?)
- SetLastError( ERROR_INVALID_FUNCTION ); for unimplemented functions - spelling fixes
This commit is contained in:
parent
267d630bd0
commit
3eb3569bd3
|
@ -57,6 +57,12 @@ static BOOL DeviceIo_IFSMgr(DWORD dwIoControlCode,
|
||||||
LPDWORD lpcbBytesReturned,
|
LPDWORD lpcbBytesReturned,
|
||||||
LPOVERLAPPED lpOverlapped);
|
LPOVERLAPPED lpOverlapped);
|
||||||
|
|
||||||
|
static BOOL DeviceIo_VCD(DWORD dwIoControlCode,
|
||||||
|
LPVOID lpvInBuffer, DWORD cbInBuffer,
|
||||||
|
LPVOID lpvOutBuffer, DWORD cbOutBuffer,
|
||||||
|
LPDWORD lpcbBytesReturned,
|
||||||
|
LPOVERLAPPED lpOverlapped);
|
||||||
|
|
||||||
static DWORD VxDCall_VWin32( DWORD service, CONTEXT86 *context );
|
static DWORD VxDCall_VWin32( DWORD service, CONTEXT86 *context );
|
||||||
|
|
||||||
static BOOL DeviceIo_VWin32(DWORD dwIoControlCode,
|
static BOOL DeviceIo_VWin32(DWORD dwIoControlCode,
|
||||||
|
@ -105,7 +111,7 @@ static const struct VxDInfo VxDList[] =
|
||||||
{ "VSD", 0x000B, NULL, NULL },
|
{ "VSD", 0x000B, NULL, NULL },
|
||||||
{ "VMD", 0x000C, NULL, NULL },
|
{ "VMD", 0x000C, NULL, NULL },
|
||||||
{ "VKD", 0x000D, NULL, NULL },
|
{ "VKD", 0x000D, NULL, NULL },
|
||||||
{ "VCD", 0x000E, NULL, NULL },
|
{ "VCD", 0x000E, NULL, DeviceIo_VCD },
|
||||||
{ "VPD", 0x000F, NULL, NULL },
|
{ "VPD", 0x000F, NULL, NULL },
|
||||||
{ "BLOCKDEV", 0x0010, NULL, NULL },
|
{ "BLOCKDEV", 0x0010, NULL, NULL },
|
||||||
{ "VMCPD", 0x0011, NULL, NULL },
|
{ "VMCPD", 0x0011, NULL, NULL },
|
||||||
|
@ -295,7 +301,7 @@ LPCSTR VMM_Service_Name[N_VMM_SERVICE] =
|
||||||
|
|
||||||
/* PageCommit flags */
|
/* PageCommit flags */
|
||||||
#define PC_FIXED 0x00000008 /* pages are permanently locked */
|
#define PC_FIXED 0x00000008 /* pages are permanently locked */
|
||||||
#define PC_LOCKED 0x00000080 /* pages are made present and locked*/
|
#define PC_LOCKED 0x00000080 /* pages are made present and locked */
|
||||||
#define PC_LOCKEDIFDP 0x00000100 /* pages are locked if swap via DOS */
|
#define PC_LOCKEDIFDP 0x00000100 /* pages are locked if swap via DOS */
|
||||||
#define PC_WRITEABLE 0x00020000 /* make the pages writeable */
|
#define PC_WRITEABLE 0x00020000 /* make the pages writeable */
|
||||||
#define PC_USER 0x00040000 /* make the pages ring 3 accessible */
|
#define PC_USER 0x00040000 /* make the pages ring 3 accessible */
|
||||||
|
@ -352,7 +358,7 @@ static const struct VxDInfo *DEVICE_GetInfo( HANDLE handle )
|
||||||
* used for VxD communication.
|
* used for VxD communication.
|
||||||
*
|
*
|
||||||
* A return value of FALSE indicates that something has gone wrong which
|
* A return value of FALSE indicates that something has gone wrong which
|
||||||
* GetLastError can decypher.
|
* GetLastError can decipher.
|
||||||
*/
|
*/
|
||||||
BOOL WINAPI DeviceIoControl(HANDLE hDevice, DWORD dwIoControlCode,
|
BOOL WINAPI DeviceIoControl(HANDLE hDevice, DWORD dwIoControlCode,
|
||||||
LPVOID lpvInBuffer, DWORD cbInBuffer,
|
LPVOID lpvInBuffer, DWORD cbInBuffer,
|
||||||
|
@ -384,9 +390,12 @@ BOOL WINAPI DeviceIoControl(HANDLE hDevice, DWORD dwIoControlCode,
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
/* FIXME: Set appropriate error */
|
|
||||||
FIXME( "Unimplemented control %ld for VxD device %s\n",
|
FIXME( "Unimplemented control %ld for VxD device %s\n",
|
||||||
dwIoControlCode, info->name ? info->name : "???" );
|
dwIoControlCode, info->name ? info->name : "???" );
|
||||||
|
/* FIXME: this is for invalid calls on W98SE,
|
||||||
|
* but maybe we should use ERROR_CALL_NOT_IMPLEMENTED
|
||||||
|
* instead ? */
|
||||||
|
SetLastError( ERROR_INVALID_FUNCTION );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -685,8 +694,8 @@ static DWORD VxDCall_VMM( DWORD service, CONTEXT86 *context )
|
||||||
ERR("Can't reserve ring 1 memory\n");
|
ERR("Can't reserve ring 1 memory\n");
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
/* FIXME: This has to be handled separately, when we have separate
|
/* FIXME: This has to be handled separately for the separate
|
||||||
address-spaces */
|
address-spaces we now have */
|
||||||
if ( page == PR_PRIVATE || page == PR_SHARED ) page = 0;
|
if ( page == PR_PRIVATE || page == PR_SHARED ) page = 0;
|
||||||
/* FIXME: Handle flags in some way */
|
/* FIXME: Handle flags in some way */
|
||||||
address = (LPVOID )(page * psize);
|
address = (LPVOID )(page * psize);
|
||||||
|
@ -849,11 +858,11 @@ static DWORD VxDCall_VMM( DWORD service, CONTEXT86 *context )
|
||||||
/***********************************************************************
|
/***********************************************************************
|
||||||
* DeviceIo_IFSMgr
|
* DeviceIo_IFSMgr
|
||||||
* NOTES
|
* NOTES
|
||||||
* The ioctls is used by 'MSNET32.DLL'.
|
* These ioctls are used by 'MSNET32.DLL'.
|
||||||
*
|
*
|
||||||
* I have been unable to uncover any documentation about the ioctls so
|
* I have been unable to uncover any documentation about the ioctls so
|
||||||
* the implementation of the cases IFS_IOCTL_21 and IFS_IOCTL_2F are
|
* the implementation of the cases IFS_IOCTL_21 and IFS_IOCTL_2F are
|
||||||
* based on a resonable guesses on information found in the Windows 95 DDK.
|
* based on reasonable guesses on information found in the Windows 95 DDK.
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
@ -983,7 +992,7 @@ static BOOL DeviceIo_IFSMgr(DWORD dwIoControlCode, LPVOID lpvInBuffer, DWORD cbI
|
||||||
* VxDCall_VWin32
|
* VxDCall_VWin32
|
||||||
*
|
*
|
||||||
* Service numbers taken from page 448 of Pietrek's "Windows 95 System
|
* Service numbers taken from page 448 of Pietrek's "Windows 95 System
|
||||||
* Progrmaming Secrets". Parameters from experimentation on real Win98.
|
* Programming Secrets". Parameters from experimentation on real Win98.
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
@ -1044,6 +1053,35 @@ static DWORD VxDCall_VWin32( DWORD service, CONTEXT86 *context )
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/***********************************************************************
|
||||||
|
* DeviceIo_VCD
|
||||||
|
*/
|
||||||
|
static BOOL DeviceIo_VCD(DWORD dwIoControlCode,
|
||||||
|
LPVOID lpvInBuffer, DWORD cbInBuffer,
|
||||||
|
LPVOID lpvOutBuffer, DWORD cbOutBuffer,
|
||||||
|
LPDWORD lpcbBytesReturned,
|
||||||
|
LPOVERLAPPED lpOverlapped)
|
||||||
|
{
|
||||||
|
BOOL retv = TRUE;
|
||||||
|
|
||||||
|
switch (dwIoControlCode)
|
||||||
|
{
|
||||||
|
case IOCTL_SERIAL_LSRMST_INSERT:
|
||||||
|
{
|
||||||
|
FIXME( "IOCTL_SERIAL_LSRMST_INSERT NIY !\n");
|
||||||
|
retv = FALSE;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
FIXME( "Unknown Control %ld\n", dwIoControlCode);
|
||||||
|
retv = FALSE;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
return retv;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/***********************************************************************
|
/***********************************************************************
|
||||||
* DeviceIo_VWin32
|
* DeviceIo_VWin32
|
||||||
|
|
Loading…
Reference in New Issue