83 lines
3.0 KiB
C
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__
|
|
|