xbox-kernel/private/ntos/dd/usb/xdcs/xdcs_old.h
2020-09-30 17:17:25 +02:00

83 lines
3.0 KiB
C

#ifndef __XDCS_H__
#define __XDCS_H__
/*++
Copyright (c) Microsoft Corporation
Module Name:
XDCS.H
Abstract:
Header file exposed to the private clients of the XDCS device.
Client API:
XGetDvdPlaybackLibraryInfo
Usage:
Sometime after calling XInitDevices (you do not need to specify the XDCS device
in the list of required devcies), call XGetDvdLibraryInfoPointer to get a pointer
to the global XDCS_DVD_LIBRARY_INFORMATION. This information is updated asynchronously
by the driver. Since DWORD read\writes are atomic, the client may poll dwStatus.
When dwStatus is XDCS_STATUS_ACCEPTED the dwVersion and szName fields can be considered valid.
Rather than polling, the client may wait on hStatusChangeEvent. This event is set
whenever the status changes. This way other threads will run more efficiently while
waiting for an accepted or rejected status. It is an auto reset event.
szName and dwVersion are only valid when dwStatus is XDCS_STATUS_ACCEPTED. The file returned
is the uncompressed version (there will be a compressed version stored somwhere too.)
dwPercentComplete and dwTimeRemaining can be polled to display a progress bar, while the status
is XDCS_STATUS_VERIFYING or XDCS_DOWNLOADING.
The status will return to XDCS_STATUS_NO_DONGLE whenever the device is removed. The filename
may or may not change, if and when another device is inserted. The filename will probably
be a derivative of the library version. I expect to probably maintain up to three different
versions on the harddisk at a time.
If there is more than one device present, it will always use the first one found, which is kind of
random.
Library:
You must explictly link XDCS.LIB to use this library.
Environment:
Xbox
Revision History:
02-22-01 : Mitchell Dernis(mitchd) - created
--*/
#define XDCS_STATUS_INIT 0
#define XDCS_STATUS_NO_DONGLE 1
#define XDCS_STATUS_VERIFYING 2
#define XDCS_STATUS_DOWNLOADING 3 // (including the decompress time)
#define XDCS_STATUS_ACCEPTED 4
#define XDCS_STATUS_REJECTED 5
typedef struct _XDCS_DVD_LIBRARY_INFORMATION
{
DWORD dwStatus; //status of the DVD library
DWORD dwPercentComplete; //percent complete if dwStatus is XDCS_STATUS_VERIFYING or XDCS_STATUS_DOWNLOADING
DWORD dwTimeRemaining; //time remaining (ms) for verify or download (guess)
HANDLE hStatusChangeEvent; //handle to event which is signaled whenever dwStatus is updated.
DWORD dwCodeLength; //length of the code stored in ROM
WORD bcdVersion; //msb = major version, lsb = minor version each byte is bcd. 0x0110 = version 01.10
CHAR szName[MAX_PATH]; //filename of code library
} XDCS_DVD_LIBRARY_INFORMATION, *PXDCS_DVD_LIBRARY_INFORMATION;
PXDCS_DVD_LIBRARY_INFORMATION XGetDvdLibraryInfoPointer();
#endif //__XDCS_H__