mirror of
https://github.com/WinampDesktop/winamp.git
synced 2025-06-18 19:05:45 -04:00
Initial community commit
This commit is contained in:
BIN
Src/Plugins/Portable/pmp_p4s/Cert.zip
Normal file
BIN
Src/Plugins/Portable/pmp_p4s/Cert.zip
Normal file
Binary file not shown.
41
Src/Plugins/Portable/pmp_p4s/MTP Error Codes.txt
Normal file
41
Src/Plugins/Portable/pmp_p4s/MTP Error Codes.txt
Normal file
@ -0,0 +1,41 @@
|
||||
|
||||
80004004 Operation aborted.
|
||||
80004005 Unspecified error.
|
||||
80004002 Interface not supported.
|
||||
80004001 Not implemented.
|
||||
80004003 Invalid pointer.
|
||||
8000FFFF Catastrophic failure.
|
||||
|
||||
80070001 INVALID_FUNCTION
|
||||
80070002 FILE_NOT_FOUND
|
||||
80070003 PATH_NOT_FOUND
|
||||
80070004 TOO_MANY_OPEN_FILES
|
||||
80070005 ACCESS_DENIED
|
||||
80070006 INVALID_HANDLE
|
||||
80070007 ARENA_TRASHED
|
||||
80070008 NOT_ENOUGH_MEMORY
|
||||
8007000d INVALID_DATA
|
||||
80070015 ERROR_NOT_READY
|
||||
80070057 INVALIDARG
|
||||
|
||||
80045000 BUSY
|
||||
80045001 INTERFACEDEAD
|
||||
80045002 INVALIDTYPE
|
||||
80045003 PROCESSFAILED
|
||||
80045004 NOTSUPPORTED
|
||||
80045005 NOTCERTIFIED
|
||||
80045006 NORIGHTS
|
||||
80045007 CALL_OUT_OF_SEQUENCE
|
||||
80045008 BUFFERTOOSMALL
|
||||
80045009 MOREDATA
|
||||
8004500A MAC_CHECK_FAILED
|
||||
8004500B USER_CANCELLED
|
||||
8004500C SDMI_TRIGGER
|
||||
8004500D SDMI_NOMORECOPIES
|
||||
8004500E REVOKED
|
||||
8004500F LICENSE_NOTEXIST
|
||||
80045010 INCORRECT_APPSEC
|
||||
80045011 INCORRECT_RIGHTS
|
||||
80045012 LICENSE_EXPIRED
|
||||
80045013 CANTOPEN_PMSN_SERVICE_PIPE
|
||||
80045013 TOO_MANY_SESSIONS
|
95
Src/Plugins/Portable/pmp_p4s/MyProgress.cpp
Normal file
95
Src/Plugins/Portable/pmp_p4s/MyProgress.cpp
Normal file
@ -0,0 +1,95 @@
|
||||
#include "MyProgress.h"
|
||||
|
||||
extern LPARAM ipc_transfer;
|
||||
|
||||
MyProgress::MyProgress(TransferItem *_t)
|
||||
: t(_t), refcount(1), estTicks(0)
|
||||
{
|
||||
}
|
||||
|
||||
MyProgress::~MyProgress() {}
|
||||
|
||||
|
||||
HRESULT MyProgress::Begin(DWORD dwEstimatedTicks)
|
||||
{
|
||||
estTicks = dwEstimatedTicks / 100;
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
HRESULT MyProgress::Progress(DWORD dwTranspiredTicks)
|
||||
{
|
||||
if (estTicks > 0) {
|
||||
int pc = dwTranspiredTicks / estTicks;
|
||||
if(pc > 100) pc = 100;
|
||||
t->pc = pc;
|
||||
}
|
||||
else t->pc = 0;
|
||||
|
||||
wchar_t buf[100] = {0};
|
||||
wsprintf(buf,WASABI_API_LNGSTRINGW(IDS_TRANSFERRING_PERCENT), t->pc);
|
||||
t->callback(t->callbackContext,buf);
|
||||
|
||||
if (*(t->killswitch))
|
||||
return WMDM_E_USER_CANCELLED;
|
||||
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
#define PHASE_START 1
|
||||
#define PHASE_INPROGRESS 2
|
||||
#define PHASE_FINISH 3
|
||||
#define PHASE_DONE 4
|
||||
#define PHASE_ERROR 5
|
||||
|
||||
HRESULT MyProgress::End()
|
||||
{
|
||||
t->phase = PHASE_FINISH;
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
#define IMPLEMENTS(ifc) if (riid == IID_ ## ifc) { ++refcount; *ppvObject = static_cast<ifc *>(this); return S_OK; }
|
||||
|
||||
HRESULT MyProgress::QueryInterface(REFIID riid,void __RPC_FAR *__RPC_FAR *ppvObject)
|
||||
{
|
||||
IMPLEMENTS(IUnknown);
|
||||
IMPLEMENTS(IWMDMProgress);
|
||||
IMPLEMENTS(IWMDMProgress2);
|
||||
IMPLEMENTS(IWMDMProgress3);
|
||||
*ppvObject = NULL;
|
||||
return E_NOINTERFACE;
|
||||
}
|
||||
|
||||
ULONG MyProgress::AddRef()
|
||||
{
|
||||
return ++refcount;
|
||||
}
|
||||
ULONG MyProgress::Release()
|
||||
{
|
||||
int x = --refcount;
|
||||
if (x == 0)
|
||||
delete this;
|
||||
|
||||
return x;
|
||||
}
|
||||
|
||||
HRESULT MyProgress::End2(HRESULT hrCompletionCode)
|
||||
{
|
||||
return End();
|
||||
}
|
||||
|
||||
HRESULT MyProgress::Begin3(GUID EventId,DWORD dwEstimatedTicks,OPAQUECOMMAND* pContext)
|
||||
{
|
||||
return Begin(dwEstimatedTicks);
|
||||
}
|
||||
|
||||
HRESULT MyProgress::Progress3(GUID EventId,DWORD dwTranspiredTicks,OPAQUECOMMAND* pContext)
|
||||
{
|
||||
return Progress(dwTranspiredTicks);
|
||||
}
|
||||
|
||||
HRESULT MyProgress::End3(GUID EventId,HRESULT hrCompletionCode,OPAQUECOMMAND* pContext)
|
||||
{
|
||||
return End2( hrCompletionCode);
|
||||
}
|
||||
|
||||
|
35
Src/Plugins/Portable/pmp_p4s/MyProgress.h
Normal file
35
Src/Plugins/Portable/pmp_p4s/MyProgress.h
Normal file
@ -0,0 +1,35 @@
|
||||
#ifndef NULLSOFT_MYPROGRESSH
|
||||
#define NULLSOFT_MYPROGRESSH
|
||||
|
||||
#include "P4SDevice.h"
|
||||
|
||||
class MyProgress : public IWMDMProgress3
|
||||
{
|
||||
public:
|
||||
MyProgress(TransferItem * t);
|
||||
virtual ~MyProgress();
|
||||
|
||||
/* IUnknown methods */
|
||||
virtual HRESULT STDMETHODCALLTYPE QueryInterface(REFIID riid,void __RPC_FAR *__RPC_FAR *ppvObject);
|
||||
virtual ULONG STDMETHODCALLTYPE AddRef();
|
||||
virtual ULONG STDMETHODCALLTYPE Release();
|
||||
|
||||
/* IWMDMProgress methods */
|
||||
virtual HRESULT STDMETHODCALLTYPE Begin(DWORD dwEstimatedTicks);
|
||||
virtual HRESULT STDMETHODCALLTYPE Progress(DWORD dwTranspiredTicks);
|
||||
virtual HRESULT STDMETHODCALLTYPE End();
|
||||
|
||||
/* IWMDMProgress2 methods */
|
||||
virtual HRESULT STDMETHODCALLTYPE End2(HRESULT hrCompletionCode);
|
||||
|
||||
/* IWMDMProgress3 methods */
|
||||
virtual HRESULT STDMETHODCALLTYPE Begin3(GUID EventId,DWORD dwEstimatedTicks,OPAQUECOMMAND* pContext);
|
||||
virtual HRESULT STDMETHODCALLTYPE Progress3(GUID EventId,DWORD dwTranspiredTicks,OPAQUECOMMAND* pContext);
|
||||
virtual HRESULT STDMETHODCALLTYPE End3(GUID EventId,HRESULT hrCompletionCode,OPAQUECOMMAND* pContext);
|
||||
public:
|
||||
TransferItem *t;
|
||||
ULONG refcount;
|
||||
DWORD estTicks;
|
||||
};
|
||||
|
||||
#endif
|
2185
Src/Plugins/Portable/pmp_p4s/P4SDevice.cpp
Normal file
2185
Src/Plugins/Portable/pmp_p4s/P4SDevice.cpp
Normal file
File diff suppressed because it is too large
Load Diff
243
Src/Plugins/Portable/pmp_p4s/P4SDevice.h
Normal file
243
Src/Plugins/Portable/pmp_p4s/P4SDevice.h
Normal file
@ -0,0 +1,243 @@
|
||||
#ifndef _P4SDEVICE_H_
|
||||
#define _P4SDEVICE_H_
|
||||
|
||||
#ifndef _UNICODE
|
||||
#define _UNICODE
|
||||
#endif
|
||||
|
||||
#ifndef UNICODE
|
||||
#define UNICODE
|
||||
#endif
|
||||
|
||||
#include <windows.h>
|
||||
#include <windowsx.h>
|
||||
#include <stdio.h>
|
||||
#include <tchar.h>
|
||||
#include <shlobj.h>
|
||||
#include "..\..\General\gen_ml/itemlist.h"
|
||||
#include "..\..\General\gen_ml/ml.h"
|
||||
#include "..\..\Library\ml_pmp/pmp.h"
|
||||
#include "..\..\Library\ml_pmp/transcoder.h"
|
||||
#include "../winamp/wa_ipc.h"
|
||||
#include "../winamp/ipc_pe.h"
|
||||
#include "../Agave/Language/api_language.h"
|
||||
#include <api/service/waServiceFactory.h>
|
||||
#include "resource1.h"
|
||||
|
||||
#include <tataki/bitmap/bitmap.h>
|
||||
#include <tataki/canvas/bltcanvas.h>
|
||||
#include <api/service/svcs/svc_imgload.h>
|
||||
#include <api/service/svcs/svc_imgwrite.h>
|
||||
|
||||
#include <api/memmgr/api_memmgr.h>
|
||||
extern api_memmgr *memoryManager;
|
||||
#define WASABI_API_MEMMGR memoryManager
|
||||
|
||||
#include "../Agave/AlbumArt/api_albumart.h"
|
||||
extern api_albumart *albumArtApi;
|
||||
#define AGAVE_API_ALBUMART albumArtApi
|
||||
|
||||
#include "../devices/api_devicemanager.h"
|
||||
extern api_devicemanager *deviceManagerApi;
|
||||
#define AGAVE_API_DEVICEMANAGER deviceManagerApi
|
||||
|
||||
|
||||
class P4SDevice;
|
||||
class MyProgress;
|
||||
class TransferItem;
|
||||
|
||||
#ifndef __RPC__in
|
||||
#define __RPC__in
|
||||
#define __RPC__in_opt
|
||||
#define __RPC__in_ecount_full(x)
|
||||
#define __RPC__in_ecount_full_opt(x)
|
||||
#define __RPC__in_ecount_full_string(x)
|
||||
#define __RPC__inout
|
||||
#define __RPC__inout_opt
|
||||
#define __RPC__deref_opt_inout_opt
|
||||
#define __RPC__deref_inout_ecount_full_opt_string(x)
|
||||
#define __RPC__inout_ecount_full(x)
|
||||
#define __RPC__out
|
||||
#define __RPC__out_ecount_full(x)
|
||||
#define __RPC__out_ecount_full_string(x)
|
||||
#define __RPC__out_ecount_part(x,y)
|
||||
#define __RPC__deref_out_ecount_full_opt(x)
|
||||
#define __RPC__deref_out_opt_string
|
||||
#define __RPC__deref_out_opt
|
||||
#endif
|
||||
|
||||
#include "WMDRMDeviceApp.h"
|
||||
#include "msWMDM.h" // Include headers for Windows Media Device Manager.
|
||||
#include "Sac.h" // Include authentication headers.
|
||||
#include "Scclient.h" // Include authentication client headers.
|
||||
#include "MyProgress.h"
|
||||
#include "resource1.h"
|
||||
|
||||
extern PMPDevicePlugin plugin;
|
||||
|
||||
class Playlist {
|
||||
public:
|
||||
wchar_t name[128];
|
||||
IWMDMStorage4 * storage;
|
||||
C_ItemList songs;
|
||||
IWMDMMetaData * meta;
|
||||
bool modified;
|
||||
Playlist() : storage(0),meta(0),modified(false){ name[0]=0; }
|
||||
};
|
||||
|
||||
class Song {
|
||||
public:
|
||||
IWMDMStorage4 * storage;
|
||||
IWMDMMetaData * meta;
|
||||
bool video;
|
||||
bool modified;
|
||||
wchar_t * artist, * album;
|
||||
IWMDMStorage4 * alb;
|
||||
IWMDMMetaData * albmeta;
|
||||
Song() {artist=album=NULL; storage=0; meta=0; video = 0; modified = 0; alb=0; albmeta=0;}
|
||||
virtual ~Song() {if(artist) free(artist); if(album) free(album); if(alb) alb->Release(); if(albmeta) albmeta->Release();}
|
||||
};
|
||||
|
||||
class TransferItem {
|
||||
public:
|
||||
int phase;
|
||||
void * callbackContext;
|
||||
void (*callback)(void * callbackContext, wchar_t * status);
|
||||
wchar_t *file;
|
||||
const itemRecordW * track;
|
||||
songid_t * songid;
|
||||
int * killswitch;
|
||||
P4SDevice * dev;
|
||||
IWMDMMetaData * meta;
|
||||
IWMDMProgress * progress;
|
||||
int pc;
|
||||
bool video;
|
||||
};
|
||||
|
||||
class P4SDevice : public Device {
|
||||
public:
|
||||
bool requiresALB;
|
||||
int error;
|
||||
Transcoder * transcoder;
|
||||
wchar_t *musicDir, *videoDir;
|
||||
bool noMetadata, supportsVideo;
|
||||
__int64 transferQueueSize;
|
||||
C_ItemList playlists;
|
||||
C_ItemList albfiles;
|
||||
IWMDMStorage4 * playlistsDir;
|
||||
wchar_t name[100];
|
||||
IWMDMDevice3* WMDevice;
|
||||
P4SDevice(IWMDMDevice3* pIDevice,bool noMetadata);
|
||||
virtual void Load();
|
||||
virtual ~P4SDevice();
|
||||
|
||||
void traverseStorage(IWMDMStorage * store, int level=0, wchar_t * artist=0, wchar_t * album=0);
|
||||
void foundSong(IWMDMStorage4 * store, IWMDMMetaData * meta, bool video, int pl=0,wchar_t * artist=0, wchar_t * album=0, IWMDMStorage4 * alb=0, IWMDMMetaData * albmeta=0);
|
||||
void foundPlaylist(IWMDMStorage4 * store, IWMDMMetaData * meta);
|
||||
bool songsEqual(songid_t a, songid_t b);
|
||||
int songsCmp(songid_t a, songid_t b);
|
||||
|
||||
virtual __int64 getDeviceCapacityAvailable(); // in bytes
|
||||
virtual __int64 getDeviceCapacityTotal(); // in bytes
|
||||
|
||||
virtual void Eject(){Close();}; // if you ejected successfully, you MUST call plugin.deviceDisconnected(this) and delete this;
|
||||
virtual void Close(); // save any changes, and call plugin.deviceDisconnected(this) AND delete this;
|
||||
|
||||
virtual void doTransfer(TransferItem * t);
|
||||
|
||||
// return the songid when transfer is finished.
|
||||
// call the callback with a percentage and the number of bytes copied so far every so often (to update the GUI)
|
||||
// return 0 for success, -1 for failed or cancelled
|
||||
virtual int transferTrackToDevice(const itemRecordW * track, // the track to transfer
|
||||
void * callbackContext, //pass this to the callback
|
||||
void (*callback)(void * callbackContext, wchar_t * status), // call this every so often so the GUI can be updated. Including when finished!
|
||||
songid_t * songid, // fill in the songid when you are finished
|
||||
int * killswitch // if this gets set to 1, the transfer has been cancelled by the user
|
||||
);
|
||||
virtual int trackAddedToTransferQueue(const itemRecordW * track); // return 0 to accept, -1 for "not enough space", -2 for "incorrect format"
|
||||
virtual void trackRemovedFromTransferQueue(const itemRecordW * track);
|
||||
virtual __int64 getTrackSizeOnDevice(const itemRecordW * track); // return the amount of space taken up on the device by the track, or 0 for incompatable (usually the filesize, unless you are transcoding)
|
||||
|
||||
virtual void deleteTrack(songid_t songid); // physically remove from device. Be sure to remove it from all the playlists!
|
||||
|
||||
virtual void commitChanges(); // optional. Will be called at a good time to save changes
|
||||
|
||||
virtual int getPlaylistCount(); // always at least 1. playlistnumber 0 is the Master Playlist containing all tracks.
|
||||
// PlaylistName(0) should return the name of the device.
|
||||
virtual void getPlaylistName(int playlistnumber, wchar_t * buf, int len);
|
||||
virtual int getPlaylistLength(int playlistnumber);
|
||||
virtual songid_t getPlaylistTrack(int playlistnumber,int songnum); // returns a songid
|
||||
|
||||
virtual void setPlaylistName(int playlistnumber, const wchar_t *buf); // playlistnumber != 0!!
|
||||
virtual void playlistSwapItems(int playlistnumber, int posA, int posB); // swap the songs at position posA and posB
|
||||
virtual void sortPlaylist(int playlistnumber, int sortBy);
|
||||
virtual void addTrackToPlaylist(int playlistnumber, songid_t songid); // adds songid to the end of the playlist
|
||||
virtual void removeTrackFromPlaylist(int playlistnumber, int songnum); //where songnum is the position of the track in the playlist
|
||||
|
||||
virtual void deletePlaylist(int playlistnumber);
|
||||
virtual int newPlaylist(const wchar_t * name); // create empty playlist, returns playlistnumber
|
||||
|
||||
virtual void getTrackArtist(songid_t songid, wchar_t * buf, int len);
|
||||
virtual void getTrackAlbum(songid_t songid, wchar_t * buf, int len);
|
||||
virtual void getTrackTitle(songid_t songid, wchar_t * buf, int len);
|
||||
virtual int getTrackTrackNum(songid_t songid);
|
||||
virtual int getTrackDiscNum(songid_t songid){return -1;}
|
||||
virtual void getTrackGenre(songid_t songid, wchar_t * buf, int len);
|
||||
virtual int getTrackYear(songid_t songid);
|
||||
virtual __int64 getTrackSize(songid_t songid); // in bytes
|
||||
virtual int getTrackLength(songid_t songid); // in millisecs
|
||||
virtual int getTrackBitrate(songid_t songid); // in kbps
|
||||
virtual int getTrackPlayCount(songid_t songid);
|
||||
virtual int getTrackRating(songid_t songid); //0-5
|
||||
virtual __time64_t getTrackLastPlayed(songid_t songid); // in unix time format
|
||||
virtual __time64_t getTrackLastUpdated(songid_t songid); // in unix time format
|
||||
virtual void getTrackAlbumArtist(songid_t songid, wchar_t * buf, int len);
|
||||
virtual void getTrackComposer(songid_t songid, wchar_t * buf, int len);
|
||||
virtual int getTrackType(songid_t songid);
|
||||
virtual void getTrackExtraInfo(songid_t songid, const wchar_t *field, wchar_t * buf, int len);
|
||||
|
||||
Song * lastChange;
|
||||
void PreCommit(Song * song);
|
||||
|
||||
// feel free to ignore any you don't support
|
||||
virtual void setTrackArtist(songid_t songid, const wchar_t * value);
|
||||
virtual void setTrackAlbum(songid_t songid, const wchar_t * value);
|
||||
virtual void setTrackTitle(songid_t songid, const wchar_t * value);
|
||||
virtual void setTrackTrackNum(songid_t songid, int value);
|
||||
virtual void setTrackDiscNum(songid_t songid, int value){};
|
||||
virtual void setTrackGenre(songid_t songid, const wchar_t * value);
|
||||
virtual void setTrackYear(songid_t songid, int year);
|
||||
virtual void setTrackPlayCount(songid_t songid, int value);
|
||||
virtual void setTrackRating(songid_t songid, int value);
|
||||
virtual void setTrackLastPlayed(songid_t songid, __time64_t value); // in unix time format
|
||||
virtual void setTrackLastUpdated(songid_t songid, __time64_t value); // in unix time format
|
||||
virtual void setTrackAlbumArtist(songid_t songid, const wchar_t * value);
|
||||
virtual void setTrackComposer(songid_t songid, const wchar_t * value);
|
||||
virtual void setTrackExtraInfo(songid_t songid, const wchar_t * field, const wchar_t * value) {}; //optional
|
||||
|
||||
virtual bool playTracks(songid_t * songidList, int listLength, int startPlaybackAt, bool enqueue){return false;}; // return false if unsupported
|
||||
|
||||
virtual intptr_t extraActions(intptr_t param1, intptr_t param2, intptr_t param3,intptr_t param4);
|
||||
|
||||
virtual bool copyToHardDriveSupported() {return true;}
|
||||
|
||||
virtual __int64 songSizeOnHardDrive(songid_t song) {return getTrackSize(song);} // how big a song will be when copied back. Return -1 for not supported.
|
||||
|
||||
virtual int copyToHardDrive(songid_t song, // the song to copy
|
||||
wchar_t * path, // path to copy to, in the form "c:\directory\song". The directory will already be created, you must append ".mp3" or whatever to this string! (there is space for at least 10 new characters).
|
||||
void * callbackContext, //pass this to the callback
|
||||
void (*callback)(void * callbackContext, wchar_t * status), // call this every so often so the GUI can be updated. Including when finished!
|
||||
int * killswitch // if this gets set to anything other than zero, the transfer has been cancelled by the user
|
||||
); // -1 for failed/not supported. 0 for success.
|
||||
|
||||
virtual void setArt(songid_t songid, void *buf, int w, int h); //buf is in format ARGB32*
|
||||
virtual pmpart_t getArt(songid_t songid);
|
||||
virtual void releaseArt(pmpart_t art);
|
||||
virtual int drawArt(pmpart_t art, HDC dc, int x, int y, int w, int h);
|
||||
virtual void getArtNaturalSize(pmpart_t art, int *w, int *h);
|
||||
virtual void setArtNaturalSize(pmpart_t art, int w, int h);
|
||||
virtual void getArtData(pmpart_t art, void* data); // data ARGB32* is at natural size
|
||||
virtual bool artIsEqual(pmpart_t a, pmpart_t b);
|
||||
};
|
||||
|
||||
#endif // _P4SDEVICE_H_
|
502
Src/Plugins/Portable/pmp_p4s/WMDRMDeviceApp.h
Normal file
502
Src/Plugins/Portable/pmp_p4s/WMDRMDeviceApp.h
Normal file
@ -0,0 +1,502 @@
|
||||
|
||||
|
||||
/* this ALWAYS GENERATED file contains the definitions for the interfaces */
|
||||
|
||||
|
||||
/* File created by MIDL compiler version 6.00.0361 */
|
||||
/* at Tue Jan 10 22:44:12 2006
|
||||
*/
|
||||
/* Compiler settings for \Wmsdk\Wmfsdk95\Wmdm\idl\WMDRMDeviceApp.idl:
|
||||
Oicf, W1, Zp8, env=Win32 (32b run)
|
||||
protocol : dce , ms_ext, c_ext, robust
|
||||
error checks: allocation ref bounds_check enum stub_data
|
||||
VC __declspec() decoration level:
|
||||
__declspec(uuid()), __declspec(selectany), __declspec(novtable)
|
||||
DECLSPEC_UUID(), MIDL_INTERFACE()
|
||||
*/
|
||||
//@@MIDL_FILE_HEADING( )
|
||||
|
||||
#pragma warning( disable: 4049 ) /* more than 64k source lines */
|
||||
|
||||
|
||||
/* verify that the <rpcndr.h> version is high enough to compile this file*/
|
||||
#ifndef __REQUIRED_RPCNDR_H_VERSION__
|
||||
#define __REQUIRED_RPCNDR_H_VERSION__ 475
|
||||
#endif
|
||||
|
||||
#include "rpc.h"
|
||||
#include "rpcndr.h"
|
||||
|
||||
#ifndef __RPCNDR_H_VERSION__
|
||||
#error this stub requires an updated version of <rpcndr.h>
|
||||
#endif // __RPCNDR_H_VERSION__
|
||||
|
||||
#ifndef COM_NO_WINDOWS_H
|
||||
#include "windows.h"
|
||||
#include "ole2.h"
|
||||
#endif /*COM_NO_WINDOWS_H*/
|
||||
|
||||
#ifndef __WMDRMDeviceApp_h__
|
||||
#define __WMDRMDeviceApp_h__
|
||||
|
||||
#if defined(_MSC_VER) && (_MSC_VER >= 1020)
|
||||
#pragma once
|
||||
#endif
|
||||
|
||||
/* Forward Declarations */
|
||||
|
||||
#ifndef __IWMDRMDeviceApp_FWD_DEFINED__
|
||||
#define __IWMDRMDeviceApp_FWD_DEFINED__
|
||||
typedef interface IWMDRMDeviceApp IWMDRMDeviceApp;
|
||||
#endif /* __IWMDRMDeviceApp_FWD_DEFINED__ */
|
||||
|
||||
|
||||
#ifndef __IWMDRMDeviceApp2_FWD_DEFINED__
|
||||
#define __IWMDRMDeviceApp2_FWD_DEFINED__
|
||||
typedef interface IWMDRMDeviceApp2 IWMDRMDeviceApp2;
|
||||
#endif /* __IWMDRMDeviceApp2_FWD_DEFINED__ */
|
||||
|
||||
|
||||
#ifndef __WMDRMDeviceApp_FWD_DEFINED__
|
||||
#define __WMDRMDeviceApp_FWD_DEFINED__
|
||||
|
||||
#ifdef __cplusplus
|
||||
typedef class WMDRMDeviceApp WMDRMDeviceApp;
|
||||
#else
|
||||
typedef struct WMDRMDeviceApp WMDRMDeviceApp;
|
||||
#endif /* __cplusplus */
|
||||
|
||||
#endif /* __WMDRMDeviceApp_FWD_DEFINED__ */
|
||||
|
||||
|
||||
/* header files for imported files */
|
||||
#include "oaidl.h"
|
||||
#include "ocidl.h"
|
||||
#include "mswmdm.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C"{
|
||||
#endif
|
||||
|
||||
void * __RPC_USER MIDL_user_allocate(size_t);
|
||||
void __RPC_USER MIDL_user_free( void * );
|
||||
|
||||
/* interface __MIDL_itf_WMDRMDeviceApp_0000 */
|
||||
/* [local] */
|
||||
|
||||
// WMDRM Device status flags
|
||||
#define WMDRM_DEVICE_ISWMDRM 0x00000001L
|
||||
#define WMDRM_DEVICE_NEEDCLOCK 0x00000002L
|
||||
#define WMDRM_DEVICE_REVOKED 0x00000004L
|
||||
#define WMDRM_CLIENT_NEEDINDIV 0x00000008L
|
||||
#define WMDRM_DEVICE_REFRESHCLOCK 0x00000010L
|
||||
// WMDRM Query Device flags
|
||||
#define WMDRM_QUERY_DEVICE_ISWMDRM 0x00000001L
|
||||
#define WMDRM_QUERY_DEVICE_CLOCKSTATUS 0x00000002L
|
||||
#define WMDRM_QUERY_DEVICE_ISREVOKED 0x00000004L
|
||||
#define WMDRM_QUERY_CLIENT_INDIVSTATUS 0x00000008L
|
||||
// ProcessMeterResponse flags
|
||||
#define WMDRM_METER_RESPONSE_ALL 0x00000000L
|
||||
#define WMDRM_METER_RESPONSE_PARTIAL 0x00000001L
|
||||
|
||||
|
||||
extern RPC_IF_HANDLE __MIDL_itf_WMDRMDeviceApp_0000_v0_0_c_ifspec;
|
||||
extern RPC_IF_HANDLE __MIDL_itf_WMDRMDeviceApp_0000_v0_0_s_ifspec;
|
||||
|
||||
#ifndef __IWMDRMDeviceApp_INTERFACE_DEFINED__
|
||||
#define __IWMDRMDeviceApp_INTERFACE_DEFINED__
|
||||
|
||||
/* interface IWMDRMDeviceApp */
|
||||
/* [unique][uuid][object] */
|
||||
|
||||
|
||||
EXTERN_C const IID IID_IWMDRMDeviceApp;
|
||||
|
||||
#if defined(__cplusplus) && !defined(CINTERFACE)
|
||||
|
||||
MIDL_INTERFACE("93AFDB44-B1E1-411d-B89B-75AD4F97882B")
|
||||
IWMDRMDeviceApp : public IUnknown
|
||||
{
|
||||
public:
|
||||
virtual HRESULT STDMETHODCALLTYPE GenerateMeterChallenge(
|
||||
/* [in] */ IWMDMDevice *pDevice,
|
||||
/* [in] */ BSTR bstrMeterCert,
|
||||
/* [out] */ BSTR *pbstrMeterURL,
|
||||
/* [out] */ BSTR *pbstrMeterData) = 0;
|
||||
|
||||
virtual HRESULT STDMETHODCALLTYPE ProcessMeterResponse(
|
||||
/* [in] */ IWMDMDevice *pDevice,
|
||||
/* [in] */ BYTE *pbResponse,
|
||||
/* [in] */ DWORD cbResponse,
|
||||
/* [out] */ DWORD *pdwFlags) = 0;
|
||||
|
||||
virtual HRESULT STDMETHODCALLTYPE QueryDeviceStatus(
|
||||
/* [in] */ IWMDMDevice *pDevice,
|
||||
/* [out] */ DWORD *pdwStatus) = 0;
|
||||
|
||||
virtual HRESULT STDMETHODCALLTYPE AcquireDeviceData(
|
||||
/* [in] */ IWMDMDevice *pDevice,
|
||||
/* [in] */ IWMDMProgress3 *pProgressCallback,
|
||||
/* [in] */ DWORD dwFlags,
|
||||
/* [out] */ DWORD *pdwStatus) = 0;
|
||||
|
||||
virtual HRESULT STDMETHODCALLTYPE SynchronizeLicenses(
|
||||
/* [in] */ IWMDMDevice *pDevice,
|
||||
/* [in] */ IWMDMProgress3 *pProgressCallback,
|
||||
/* [in] */ DWORD cMinCountThreshold,
|
||||
/* [in] */ DWORD cMinHoursThreshold) = 0;
|
||||
|
||||
};
|
||||
|
||||
#else /* C style interface */
|
||||
|
||||
typedef struct IWMDRMDeviceAppVtbl
|
||||
{
|
||||
BEGIN_INTERFACE
|
||||
|
||||
HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
|
||||
IWMDRMDeviceApp * This,
|
||||
/* [in] */ REFIID riid,
|
||||
/* [iid_is][out] */ void **ppvObject);
|
||||
|
||||
ULONG ( STDMETHODCALLTYPE *AddRef )(
|
||||
IWMDRMDeviceApp * This);
|
||||
|
||||
ULONG ( STDMETHODCALLTYPE *Release )(
|
||||
IWMDRMDeviceApp * This);
|
||||
|
||||
HRESULT ( STDMETHODCALLTYPE *GenerateMeterChallenge )(
|
||||
IWMDRMDeviceApp * This,
|
||||
/* [in] */ IWMDMDevice *pDevice,
|
||||
/* [in] */ BSTR bstrMeterCert,
|
||||
/* [out] */ BSTR *pbstrMeterURL,
|
||||
/* [out] */ BSTR *pbstrMeterData);
|
||||
|
||||
HRESULT ( STDMETHODCALLTYPE *ProcessMeterResponse )(
|
||||
IWMDRMDeviceApp * This,
|
||||
/* [in] */ IWMDMDevice *pDevice,
|
||||
/* [in] */ BYTE *pbResponse,
|
||||
/* [in] */ DWORD cbResponse,
|
||||
/* [out] */ DWORD *pdwFlags);
|
||||
|
||||
HRESULT ( STDMETHODCALLTYPE *QueryDeviceStatus )(
|
||||
IWMDRMDeviceApp * This,
|
||||
/* [in] */ IWMDMDevice *pDevice,
|
||||
/* [out] */ DWORD *pdwStatus);
|
||||
|
||||
HRESULT ( STDMETHODCALLTYPE *AcquireDeviceData )(
|
||||
IWMDRMDeviceApp * This,
|
||||
/* [in] */ IWMDMDevice *pDevice,
|
||||
/* [in] */ IWMDMProgress3 *pProgressCallback,
|
||||
/* [in] */ DWORD dwFlags,
|
||||
/* [out] */ DWORD *pdwStatus);
|
||||
|
||||
HRESULT ( STDMETHODCALLTYPE *SynchronizeLicenses )(
|
||||
IWMDRMDeviceApp * This,
|
||||
/* [in] */ IWMDMDevice *pDevice,
|
||||
/* [in] */ IWMDMProgress3 *pProgressCallback,
|
||||
/* [in] */ DWORD cMinCountThreshold,
|
||||
/* [in] */ DWORD cMinHoursThreshold);
|
||||
|
||||
END_INTERFACE
|
||||
} IWMDRMDeviceAppVtbl;
|
||||
|
||||
interface IWMDRMDeviceApp
|
||||
{
|
||||
CONST_VTBL struct IWMDRMDeviceAppVtbl *lpVtbl;
|
||||
};
|
||||
|
||||
|
||||
|
||||
#ifdef COBJMACROS
|
||||
|
||||
|
||||
#define IWMDRMDeviceApp_QueryInterface(This,riid,ppvObject) \
|
||||
(This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
|
||||
|
||||
#define IWMDRMDeviceApp_AddRef(This) \
|
||||
(This)->lpVtbl -> AddRef(This)
|
||||
|
||||
#define IWMDRMDeviceApp_Release(This) \
|
||||
(This)->lpVtbl -> Release(This)
|
||||
|
||||
|
||||
#define IWMDRMDeviceApp_GenerateMeterChallenge(This,pDevice,bstrMeterCert,pbstrMeterURL,pbstrMeterData) \
|
||||
(This)->lpVtbl -> GenerateMeterChallenge(This,pDevice,bstrMeterCert,pbstrMeterURL,pbstrMeterData)
|
||||
|
||||
#define IWMDRMDeviceApp_ProcessMeterResponse(This,pDevice,pbResponse,cbResponse,pdwFlags) \
|
||||
(This)->lpVtbl -> ProcessMeterResponse(This,pDevice,pbResponse,cbResponse,pdwFlags)
|
||||
|
||||
#define IWMDRMDeviceApp_QueryDeviceStatus(This,pDevice,pdwStatus) \
|
||||
(This)->lpVtbl -> QueryDeviceStatus(This,pDevice,pdwStatus)
|
||||
|
||||
#define IWMDRMDeviceApp_AcquireDeviceData(This,pDevice,pProgressCallback,dwFlags,pdwStatus) \
|
||||
(This)->lpVtbl -> AcquireDeviceData(This,pDevice,pProgressCallback,dwFlags,pdwStatus)
|
||||
|
||||
#define IWMDRMDeviceApp_SynchronizeLicenses(This,pDevice,pProgressCallback,cMinCountThreshold,cMinHoursThreshold) \
|
||||
(This)->lpVtbl -> SynchronizeLicenses(This,pDevice,pProgressCallback,cMinCountThreshold,cMinHoursThreshold)
|
||||
|
||||
#endif /* COBJMACROS */
|
||||
|
||||
|
||||
#endif /* C style interface */
|
||||
|
||||
|
||||
|
||||
HRESULT STDMETHODCALLTYPE IWMDRMDeviceApp_GenerateMeterChallenge_Proxy(
|
||||
IWMDRMDeviceApp * This,
|
||||
/* [in] */ IWMDMDevice *pDevice,
|
||||
/* [in] */ BSTR bstrMeterCert,
|
||||
/* [out] */ BSTR *pbstrMeterURL,
|
||||
/* [out] */ BSTR *pbstrMeterData);
|
||||
|
||||
|
||||
void __RPC_STUB IWMDRMDeviceApp_GenerateMeterChallenge_Stub(
|
||||
IRpcStubBuffer *This,
|
||||
IRpcChannelBuffer *_pRpcChannelBuffer,
|
||||
PRPC_MESSAGE _pRpcMessage,
|
||||
DWORD *_pdwStubPhase);
|
||||
|
||||
|
||||
HRESULT STDMETHODCALLTYPE IWMDRMDeviceApp_ProcessMeterResponse_Proxy(
|
||||
IWMDRMDeviceApp * This,
|
||||
/* [in] */ IWMDMDevice *pDevice,
|
||||
/* [in] */ BYTE *pbResponse,
|
||||
/* [in] */ DWORD cbResponse,
|
||||
/* [out] */ DWORD *pdwFlags);
|
||||
|
||||
|
||||
void __RPC_STUB IWMDRMDeviceApp_ProcessMeterResponse_Stub(
|
||||
IRpcStubBuffer *This,
|
||||
IRpcChannelBuffer *_pRpcChannelBuffer,
|
||||
PRPC_MESSAGE _pRpcMessage,
|
||||
DWORD *_pdwStubPhase);
|
||||
|
||||
|
||||
HRESULT STDMETHODCALLTYPE IWMDRMDeviceApp_QueryDeviceStatus_Proxy(
|
||||
IWMDRMDeviceApp * This,
|
||||
/* [in] */ IWMDMDevice *pDevice,
|
||||
/* [out] */ DWORD *pdwStatus);
|
||||
|
||||
|
||||
void __RPC_STUB IWMDRMDeviceApp_QueryDeviceStatus_Stub(
|
||||
IRpcStubBuffer *This,
|
||||
IRpcChannelBuffer *_pRpcChannelBuffer,
|
||||
PRPC_MESSAGE _pRpcMessage,
|
||||
DWORD *_pdwStubPhase);
|
||||
|
||||
|
||||
HRESULT STDMETHODCALLTYPE IWMDRMDeviceApp_AcquireDeviceData_Proxy(
|
||||
IWMDRMDeviceApp * This,
|
||||
/* [in] */ IWMDMDevice *pDevice,
|
||||
/* [in] */ IWMDMProgress3 *pProgressCallback,
|
||||
/* [in] */ DWORD dwFlags,
|
||||
/* [out] */ DWORD *pdwStatus);
|
||||
|
||||
|
||||
void __RPC_STUB IWMDRMDeviceApp_AcquireDeviceData_Stub(
|
||||
IRpcStubBuffer *This,
|
||||
IRpcChannelBuffer *_pRpcChannelBuffer,
|
||||
PRPC_MESSAGE _pRpcMessage,
|
||||
DWORD *_pdwStubPhase);
|
||||
|
||||
|
||||
HRESULT STDMETHODCALLTYPE IWMDRMDeviceApp_SynchronizeLicenses_Proxy(
|
||||
IWMDRMDeviceApp * This,
|
||||
/* [in] */ IWMDMDevice *pDevice,
|
||||
/* [in] */ IWMDMProgress3 *pProgressCallback,
|
||||
/* [in] */ DWORD cMinCountThreshold,
|
||||
/* [in] */ DWORD cMinHoursThreshold);
|
||||
|
||||
|
||||
void __RPC_STUB IWMDRMDeviceApp_SynchronizeLicenses_Stub(
|
||||
IRpcStubBuffer *This,
|
||||
IRpcChannelBuffer *_pRpcChannelBuffer,
|
||||
PRPC_MESSAGE _pRpcMessage,
|
||||
DWORD *_pdwStubPhase);
|
||||
|
||||
|
||||
|
||||
#endif /* __IWMDRMDeviceApp_INTERFACE_DEFINED__ */
|
||||
|
||||
|
||||
#ifndef __IWMDRMDeviceApp2_INTERFACE_DEFINED__
|
||||
#define __IWMDRMDeviceApp2_INTERFACE_DEFINED__
|
||||
|
||||
/* interface IWMDRMDeviceApp2 */
|
||||
/* [unique][uuid][object] */
|
||||
|
||||
|
||||
EXTERN_C const IID IID_IWMDRMDeviceApp2;
|
||||
|
||||
#if defined(__cplusplus) && !defined(CINTERFACE)
|
||||
|
||||
MIDL_INTERFACE("600D6E55-DEA5-4e4c-9C3A-6BD642A45B9D")
|
||||
IWMDRMDeviceApp2 : public IWMDRMDeviceApp
|
||||
{
|
||||
public:
|
||||
virtual HRESULT STDMETHODCALLTYPE QueryDeviceStatus2(
|
||||
/* [in] */ IWMDMDevice *pDevice,
|
||||
/* [in] */ DWORD dwFlags,
|
||||
/* [out] */ DWORD *pdwStatus) = 0;
|
||||
|
||||
};
|
||||
|
||||
#else /* C style interface */
|
||||
|
||||
typedef struct IWMDRMDeviceApp2Vtbl
|
||||
{
|
||||
BEGIN_INTERFACE
|
||||
|
||||
HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
|
||||
IWMDRMDeviceApp2 * This,
|
||||
/* [in] */ REFIID riid,
|
||||
/* [iid_is][out] */ void **ppvObject);
|
||||
|
||||
ULONG ( STDMETHODCALLTYPE *AddRef )(
|
||||
IWMDRMDeviceApp2 * This);
|
||||
|
||||
ULONG ( STDMETHODCALLTYPE *Release )(
|
||||
IWMDRMDeviceApp2 * This);
|
||||
|
||||
HRESULT ( STDMETHODCALLTYPE *GenerateMeterChallenge )(
|
||||
IWMDRMDeviceApp2 * This,
|
||||
/* [in] */ IWMDMDevice *pDevice,
|
||||
/* [in] */ BSTR bstrMeterCert,
|
||||
/* [out] */ BSTR *pbstrMeterURL,
|
||||
/* [out] */ BSTR *pbstrMeterData);
|
||||
|
||||
HRESULT ( STDMETHODCALLTYPE *ProcessMeterResponse )(
|
||||
IWMDRMDeviceApp2 * This,
|
||||
/* [in] */ IWMDMDevice *pDevice,
|
||||
/* [in] */ BYTE *pbResponse,
|
||||
/* [in] */ DWORD cbResponse,
|
||||
/* [out] */ DWORD *pdwFlags);
|
||||
|
||||
HRESULT ( STDMETHODCALLTYPE *QueryDeviceStatus )(
|
||||
IWMDRMDeviceApp2 * This,
|
||||
/* [in] */ IWMDMDevice *pDevice,
|
||||
/* [out] */ DWORD *pdwStatus);
|
||||
|
||||
HRESULT ( STDMETHODCALLTYPE *AcquireDeviceData )(
|
||||
IWMDRMDeviceApp2 * This,
|
||||
/* [in] */ IWMDMDevice *pDevice,
|
||||
/* [in] */ IWMDMProgress3 *pProgressCallback,
|
||||
/* [in] */ DWORD dwFlags,
|
||||
/* [out] */ DWORD *pdwStatus);
|
||||
|
||||
HRESULT ( STDMETHODCALLTYPE *SynchronizeLicenses )(
|
||||
IWMDRMDeviceApp2 * This,
|
||||
/* [in] */ IWMDMDevice *pDevice,
|
||||
/* [in] */ IWMDMProgress3 *pProgressCallback,
|
||||
/* [in] */ DWORD cMinCountThreshold,
|
||||
/* [in] */ DWORD cMinHoursThreshold);
|
||||
|
||||
HRESULT ( STDMETHODCALLTYPE *QueryDeviceStatus2 )(
|
||||
IWMDRMDeviceApp2 * This,
|
||||
/* [in] */ IWMDMDevice *pDevice,
|
||||
/* [in] */ DWORD dwFlags,
|
||||
/* [out] */ DWORD *pdwStatus);
|
||||
|
||||
END_INTERFACE
|
||||
} IWMDRMDeviceApp2Vtbl;
|
||||
|
||||
interface IWMDRMDeviceApp2
|
||||
{
|
||||
CONST_VTBL struct IWMDRMDeviceApp2Vtbl *lpVtbl;
|
||||
};
|
||||
|
||||
|
||||
|
||||
#ifdef COBJMACROS
|
||||
|
||||
|
||||
#define IWMDRMDeviceApp2_QueryInterface(This,riid,ppvObject) \
|
||||
(This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
|
||||
|
||||
#define IWMDRMDeviceApp2_AddRef(This) \
|
||||
(This)->lpVtbl -> AddRef(This)
|
||||
|
||||
#define IWMDRMDeviceApp2_Release(This) \
|
||||
(This)->lpVtbl -> Release(This)
|
||||
|
||||
|
||||
#define IWMDRMDeviceApp2_GenerateMeterChallenge(This,pDevice,bstrMeterCert,pbstrMeterURL,pbstrMeterData) \
|
||||
(This)->lpVtbl -> GenerateMeterChallenge(This,pDevice,bstrMeterCert,pbstrMeterURL,pbstrMeterData)
|
||||
|
||||
#define IWMDRMDeviceApp2_ProcessMeterResponse(This,pDevice,pbResponse,cbResponse,pdwFlags) \
|
||||
(This)->lpVtbl -> ProcessMeterResponse(This,pDevice,pbResponse,cbResponse,pdwFlags)
|
||||
|
||||
#define IWMDRMDeviceApp2_QueryDeviceStatus(This,pDevice,pdwStatus) \
|
||||
(This)->lpVtbl -> QueryDeviceStatus(This,pDevice,pdwStatus)
|
||||
|
||||
#define IWMDRMDeviceApp2_AcquireDeviceData(This,pDevice,pProgressCallback,dwFlags,pdwStatus) \
|
||||
(This)->lpVtbl -> AcquireDeviceData(This,pDevice,pProgressCallback,dwFlags,pdwStatus)
|
||||
|
||||
#define IWMDRMDeviceApp2_SynchronizeLicenses(This,pDevice,pProgressCallback,cMinCountThreshold,cMinHoursThreshold) \
|
||||
(This)->lpVtbl -> SynchronizeLicenses(This,pDevice,pProgressCallback,cMinCountThreshold,cMinHoursThreshold)
|
||||
|
||||
|
||||
#define IWMDRMDeviceApp2_QueryDeviceStatus2(This,pDevice,dwFlags,pdwStatus) \
|
||||
(This)->lpVtbl -> QueryDeviceStatus2(This,pDevice,dwFlags,pdwStatus)
|
||||
|
||||
#endif /* COBJMACROS */
|
||||
|
||||
|
||||
#endif /* C style interface */
|
||||
|
||||
|
||||
|
||||
HRESULT STDMETHODCALLTYPE IWMDRMDeviceApp2_QueryDeviceStatus2_Proxy(
|
||||
IWMDRMDeviceApp2 * This,
|
||||
/* [in] */ IWMDMDevice *pDevice,
|
||||
/* [in] */ DWORD dwFlags,
|
||||
/* [out] */ DWORD *pdwStatus);
|
||||
|
||||
|
||||
void __RPC_STUB IWMDRMDeviceApp2_QueryDeviceStatus2_Stub(
|
||||
IRpcStubBuffer *This,
|
||||
IRpcChannelBuffer *_pRpcChannelBuffer,
|
||||
PRPC_MESSAGE _pRpcMessage,
|
||||
DWORD *_pdwStubPhase);
|
||||
|
||||
|
||||
|
||||
#endif /* __IWMDRMDeviceApp2_INTERFACE_DEFINED__ */
|
||||
|
||||
|
||||
|
||||
#ifndef __WMDRMDeviceAppLib_LIBRARY_DEFINED__
|
||||
#define __WMDRMDeviceAppLib_LIBRARY_DEFINED__
|
||||
|
||||
/* library WMDRMDeviceAppLib */
|
||||
/* [helpstring][version][uuid] */
|
||||
|
||||
|
||||
EXTERN_C const IID LIBID_WMDRMDeviceAppLib;
|
||||
|
||||
EXTERN_C const CLSID CLSID_WMDRMDeviceApp;
|
||||
|
||||
#ifdef __cplusplus
|
||||
|
||||
class DECLSPEC_UUID("5C140836-43DE-11d3-847D-00C04F79DBC0")
|
||||
WMDRMDeviceApp;
|
||||
#endif
|
||||
#endif /* __WMDRMDeviceAppLib_LIBRARY_DEFINED__ */
|
||||
|
||||
/* Additional Prototypes for ALL interfaces */
|
||||
|
||||
unsigned long __RPC_USER BSTR_UserSize( unsigned long *, unsigned long , BSTR * );
|
||||
unsigned char * __RPC_USER BSTR_UserMarshal( unsigned long *, unsigned char *, BSTR * );
|
||||
unsigned char * __RPC_USER BSTR_UserUnmarshal(unsigned long *, unsigned char *, BSTR * );
|
||||
void __RPC_USER BSTR_UserFree( unsigned long *, BSTR * );
|
||||
|
||||
/* end of Additional Prototypes */
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
||||
|
93
Src/Plugins/Portable/pmp_p4s/WMDRMDeviceApp_i.c
Normal file
93
Src/Plugins/Portable/pmp_p4s/WMDRMDeviceApp_i.c
Normal file
@ -0,0 +1,93 @@
|
||||
|
||||
|
||||
/* this ALWAYS GENERATED file contains the IIDs and CLSIDs */
|
||||
|
||||
/* link this file in with the server and any clients */
|
||||
|
||||
|
||||
/* File created by MIDL compiler version 6.00.0361 */
|
||||
/* at Tue Jan 10 22:44:12 2006
|
||||
*/
|
||||
/* Compiler settings for \Wmsdk\Wmfsdk95\Wmdm\idl\WMDRMDeviceApp.idl:
|
||||
Oicf, W1, Zp8, env=Win32 (32b run)
|
||||
protocol : dce , ms_ext, c_ext, robust
|
||||
error checks: allocation ref bounds_check enum stub_data
|
||||
VC __declspec() decoration level:
|
||||
__declspec(uuid()), __declspec(selectany), __declspec(novtable)
|
||||
DECLSPEC_UUID(), MIDL_INTERFACE()
|
||||
*/
|
||||
//@@MIDL_FILE_HEADING( )
|
||||
|
||||
#if !defined(_M_IA64) && !defined(_M_AMD64)
|
||||
|
||||
|
||||
#pragma warning( disable: 4049 ) /* more than 64k source lines */
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C"{
|
||||
#endif
|
||||
|
||||
|
||||
#include <rpc.h>
|
||||
#include <rpcndr.h>
|
||||
|
||||
#ifdef _MIDL_USE_GUIDDEF_
|
||||
|
||||
#ifndef INITGUID
|
||||
#define INITGUID
|
||||
#include <guiddef.h>
|
||||
#undef INITGUID
|
||||
#else
|
||||
#include <guiddef.h>
|
||||
#endif
|
||||
|
||||
#define MIDL_DEFINE_GUID(type,name,l,w1,w2,b1,b2,b3,b4,b5,b6,b7,b8) \
|
||||
DEFINE_GUID(name,l,w1,w2,b1,b2,b3,b4,b5,b6,b7,b8)
|
||||
|
||||
#else // !_MIDL_USE_GUIDDEF_
|
||||
|
||||
#ifndef __IID_DEFINED__
|
||||
#define __IID_DEFINED__
|
||||
|
||||
typedef struct _IID
|
||||
{
|
||||
unsigned long x;
|
||||
unsigned short s1;
|
||||
unsigned short s2;
|
||||
unsigned char c[8];
|
||||
} IID;
|
||||
|
||||
#endif // __IID_DEFINED__
|
||||
|
||||
#ifndef CLSID_DEFINED
|
||||
#define CLSID_DEFINED
|
||||
typedef IID CLSID;
|
||||
#endif // CLSID_DEFINED
|
||||
|
||||
#define MIDL_DEFINE_GUID(type,name,l,w1,w2,b1,b2,b3,b4,b5,b6,b7,b8) \
|
||||
const type name = {l,w1,w2,{b1,b2,b3,b4,b5,b6,b7,b8}}
|
||||
|
||||
#endif !_MIDL_USE_GUIDDEF_
|
||||
|
||||
MIDL_DEFINE_GUID(IID, IID_IWMDRMDeviceApp,0x93AFDB44,0xB1E1,0x411d,0xB8,0x9B,0x75,0xAD,0x4F,0x97,0x88,0x2B);
|
||||
|
||||
|
||||
MIDL_DEFINE_GUID(IID, IID_IWMDRMDeviceApp2,0x600D6E55,0xDEA5,0x4e4c,0x9C,0x3A,0x6B,0xD6,0x42,0xA4,0x5B,0x9D);
|
||||
|
||||
|
||||
MIDL_DEFINE_GUID(IID, LIBID_WMDRMDeviceAppLib,0x50BB7AB2,0x0498,0x450D,0xA2,0xC3,0x81,0xCC,0x17,0xFD,0x15,0x4D);
|
||||
|
||||
|
||||
MIDL_DEFINE_GUID(CLSID, CLSID_WMDRMDeviceApp,0x5C140836,0x43DE,0x11d3,0x84,0x7D,0x00,0xC0,0x4F,0x79,0xDB,0xC0);
|
||||
|
||||
#undef MIDL_DEFINE_GUID
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
#endif /* !defined(_M_IA64) && !defined(_M_AMD64)*/
|
||||
|
285
Src/Plugins/Portable/pmp_p4s/deviceprovider.cpp
Normal file
285
Src/Plugins/Portable/pmp_p4s/deviceprovider.cpp
Normal file
@ -0,0 +1,285 @@
|
||||
#include "P4SDevice.h"
|
||||
#include "./deviceprovider.h"
|
||||
#include "../devices/api_devicemanager.h"
|
||||
#include "../nu/threadpool/api_threadpool.h"
|
||||
|
||||
void checkForDevices(BOOL *killSwitch);
|
||||
BOOL
|
||||
QueueThreadFunction(api_threadpool::ThreadPoolFunc func, void *user, intptr_t id);
|
||||
|
||||
DeviceProvider::DeviceProvider()
|
||||
: ref(1), activity(0), manager(NULL), readyEvent(NULL), cancelDiscovery(FALSE)
|
||||
{
|
||||
InitializeCriticalSection(&lock);
|
||||
}
|
||||
|
||||
DeviceProvider::~DeviceProvider()
|
||||
{
|
||||
CancelDiscovery();
|
||||
|
||||
if (NULL != readyEvent)
|
||||
CloseHandle(readyEvent);
|
||||
|
||||
DeleteCriticalSection(&lock);
|
||||
}
|
||||
|
||||
HRESULT DeviceProvider::CreateInstance(DeviceProvider **instance)
|
||||
{
|
||||
if (NULL == instance)
|
||||
return E_POINTER;
|
||||
|
||||
*instance = new DeviceProvider();
|
||||
|
||||
if (NULL == *instance)
|
||||
return E_OUTOFMEMORY;
|
||||
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
size_t DeviceProvider::AddRef()
|
||||
{
|
||||
return InterlockedIncrement((LONG*)&ref);
|
||||
}
|
||||
|
||||
size_t DeviceProvider::Release()
|
||||
{
|
||||
if (0 == ref)
|
||||
return ref;
|
||||
|
||||
LONG r = InterlockedDecrement((LONG*)&ref);
|
||||
if (0 == r)
|
||||
delete(this);
|
||||
|
||||
return r;
|
||||
}
|
||||
|
||||
int DeviceProvider::QueryInterface(GUID interface_guid, void **object)
|
||||
{
|
||||
if (NULL == object)
|
||||
return E_POINTER;
|
||||
|
||||
if (IsEqualIID(interface_guid, IFC_DeviceProvider))
|
||||
*object = static_cast<ifc_deviceprovider*>(this);
|
||||
else
|
||||
{
|
||||
*object = NULL;
|
||||
return E_NOINTERFACE;
|
||||
}
|
||||
|
||||
if (NULL == *object)
|
||||
return E_UNEXPECTED;
|
||||
|
||||
AddRef();
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
void DeviceProvider::Lock()
|
||||
{
|
||||
EnterCriticalSection(&lock);
|
||||
}
|
||||
|
||||
void DeviceProvider::Unlock()
|
||||
{
|
||||
LeaveCriticalSection(&lock);
|
||||
}
|
||||
|
||||
DWORD DeviceProvider::DiscoveryThread()
|
||||
{
|
||||
IncrementActivity();
|
||||
|
||||
if (FALSE == cancelDiscovery)
|
||||
{
|
||||
checkForDevices(&cancelDiscovery);
|
||||
}
|
||||
|
||||
DecrementActivity();
|
||||
|
||||
Lock();
|
||||
|
||||
if (NULL != readyEvent)
|
||||
SetEvent(readyEvent);
|
||||
|
||||
Unlock();
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int DeviceProvider_DiscoveryThreadStarter(HANDLE handle, void *user, intptr_t id)
|
||||
{
|
||||
DeviceProvider *self;
|
||||
DWORD result;
|
||||
|
||||
self = (DeviceProvider*)user;
|
||||
|
||||
if (NULL != self)
|
||||
result = self->DiscoveryThread();
|
||||
else
|
||||
result = -2;
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
HRESULT DeviceProvider::BeginDiscovery(api_devicemanager *manager)
|
||||
{
|
||||
HRESULT hr;
|
||||
|
||||
Lock();
|
||||
|
||||
if (NULL != readyEvent &&
|
||||
WAIT_TIMEOUT == WaitForSingleObject(readyEvent, 0))
|
||||
{
|
||||
hr = E_PENDING;
|
||||
}
|
||||
else
|
||||
{
|
||||
hr = S_OK;
|
||||
|
||||
if (NULL == readyEvent)
|
||||
{
|
||||
readyEvent = CreateEvent(NULL, TRUE, TRUE, NULL);
|
||||
if (NULL == readyEvent)
|
||||
hr = E_FAIL;
|
||||
}
|
||||
|
||||
if (SUCCEEDED(hr))
|
||||
{
|
||||
cancelDiscovery = FALSE;
|
||||
ResetEvent(readyEvent);
|
||||
|
||||
if (FALSE == QueueThreadFunction(DeviceProvider_DiscoveryThreadStarter,
|
||||
this, 0))
|
||||
{
|
||||
SetEvent(readyEvent);
|
||||
hr = E_FAIL;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Unlock();
|
||||
|
||||
return hr;
|
||||
}
|
||||
|
||||
HRESULT DeviceProvider::CancelDiscovery()
|
||||
{
|
||||
HRESULT hr;
|
||||
|
||||
hr = S_FALSE;
|
||||
|
||||
Lock();
|
||||
|
||||
if (NULL != readyEvent)
|
||||
{
|
||||
cancelDiscovery = TRUE;
|
||||
if (WAIT_OBJECT_0 == WaitForSingleObject(readyEvent, 0))
|
||||
hr = S_OK;
|
||||
|
||||
cancelDiscovery = FALSE;
|
||||
}
|
||||
|
||||
Unlock();
|
||||
|
||||
return hr;
|
||||
}
|
||||
|
||||
HRESULT DeviceProvider::GetActive()
|
||||
{
|
||||
HRESULT hr;
|
||||
|
||||
Lock();
|
||||
|
||||
if (0 != activity)
|
||||
hr = S_OK;
|
||||
else
|
||||
hr = S_FALSE;
|
||||
|
||||
Unlock();
|
||||
|
||||
return hr;
|
||||
}
|
||||
|
||||
HRESULT DeviceProvider::Register(api_devicemanager *manager)
|
||||
{
|
||||
HRESULT hr;
|
||||
|
||||
if (NULL != this->manager)
|
||||
return E_UNEXPECTED;
|
||||
|
||||
if (NULL == manager)
|
||||
return E_POINTER;
|
||||
|
||||
hr = manager->RegisterProvider(this);
|
||||
if (SUCCEEDED(hr))
|
||||
{
|
||||
this->manager = manager;
|
||||
manager->AddRef();
|
||||
}
|
||||
return hr;
|
||||
}
|
||||
|
||||
HRESULT DeviceProvider::Unregister()
|
||||
{
|
||||
HRESULT hr;
|
||||
|
||||
if (NULL == manager)
|
||||
return E_UNEXPECTED;
|
||||
|
||||
hr = manager->UnregisterProvider(this);
|
||||
manager->Release();
|
||||
manager = NULL;
|
||||
return hr;
|
||||
}
|
||||
|
||||
size_t DeviceProvider::IncrementActivity()
|
||||
{
|
||||
size_t a;
|
||||
|
||||
Lock();
|
||||
|
||||
activity++;
|
||||
if (1 == activity &&
|
||||
NULL != manager)
|
||||
{
|
||||
manager->SetProviderActive(this, TRUE);
|
||||
}
|
||||
|
||||
a = activity;
|
||||
|
||||
Unlock();
|
||||
|
||||
return a;
|
||||
}
|
||||
|
||||
size_t DeviceProvider::DecrementActivity()
|
||||
{
|
||||
size_t a;
|
||||
|
||||
Lock();
|
||||
|
||||
if (0 != activity)
|
||||
{
|
||||
activity--;
|
||||
if (0 == activity &&
|
||||
NULL != manager)
|
||||
{
|
||||
manager->SetProviderActive(this, FALSE);
|
||||
}
|
||||
}
|
||||
|
||||
a = activity;
|
||||
|
||||
Unlock();
|
||||
|
||||
return a;
|
||||
}
|
||||
|
||||
#define CBCLASS DeviceProvider
|
||||
START_DISPATCH;
|
||||
CB(ADDREF, AddRef)
|
||||
CB(RELEASE, Release)
|
||||
CB(QUERYINTERFACE, QueryInterface)
|
||||
CB(API_BEGINDISCOVERY, BeginDiscovery)
|
||||
CB(API_CANCELDISCOVERY, CancelDiscovery)
|
||||
CB(API_GETACTIVE, GetActive)
|
||||
END_DISPATCH;
|
||||
#undef CBCLASS
|
49
Src/Plugins/Portable/pmp_p4s/deviceprovider.h
Normal file
49
Src/Plugins/Portable/pmp_p4s/deviceprovider.h
Normal file
@ -0,0 +1,49 @@
|
||||
#pragma once
|
||||
|
||||
#include <wtypes.h>
|
||||
#include "../devices/ifc_deviceprovider.h"
|
||||
#include "..\..\Library\ml_pmp/pmp.h"
|
||||
|
||||
class DeviceProvider : public ifc_deviceprovider
|
||||
{
|
||||
protected:
|
||||
DeviceProvider();
|
||||
~DeviceProvider();
|
||||
|
||||
public:
|
||||
static HRESULT CreateInstance(DeviceProvider **instance);
|
||||
|
||||
public:
|
||||
/* Dispatchable */
|
||||
size_t AddRef();
|
||||
size_t Release();
|
||||
int QueryInterface(GUID interface_guid, void **object);
|
||||
|
||||
/* ifc_deviceprovider */
|
||||
HRESULT BeginDiscovery(api_devicemanager *manager);
|
||||
HRESULT CancelDiscovery();
|
||||
HRESULT GetActive();
|
||||
|
||||
public:
|
||||
HRESULT Register(api_devicemanager *manager);
|
||||
HRESULT Unregister();
|
||||
size_t IncrementActivity();
|
||||
size_t DecrementActivity();
|
||||
|
||||
private:
|
||||
void Lock();
|
||||
void Unlock();
|
||||
DWORD DiscoveryThread();
|
||||
friend static int DeviceProvider_DiscoveryThreadStarter(HANDLE handle, void *user_data, intptr_t id);
|
||||
|
||||
protected:
|
||||
size_t ref;
|
||||
size_t activity;
|
||||
CRITICAL_SECTION lock;
|
||||
api_devicemanager *manager;
|
||||
HANDLE readyEvent;
|
||||
BOOL cancelDiscovery;
|
||||
|
||||
protected:
|
||||
RECVS_DISPATCH;
|
||||
};
|
531
Src/Plugins/Portable/pmp_p4s/key-sub-523.c
Normal file
531
Src/Plugins/Portable/pmp_p4s/key-sub-523.c
Normal file
@ -0,0 +1,531 @@
|
||||
#include "wtypes.h"
|
||||
BYTE abPVK[4096] = {
|
||||
0x3E, 0x45, 0xEB, 0x7B, 0xC8, 0xE7, 0x19, 0x8D,
|
||||
0xFA, 0x55, 0xBF, 0x7B, 0xE8, 0x2E, 0xDE, 0xB2,
|
||||
0xBF, 0xD1, 0x2D, 0xA5, 0xEA, 0x0A, 0x04, 0xB0,
|
||||
0x03, 0x59, 0x26, 0x15, 0x78, 0xDC, 0xD1, 0x9F,
|
||||
0xCD, 0x58, 0xAC, 0x29, 0x01, 0x27, 0x24, 0x02,
|
||||
0xBE, 0xF4, 0xD6, 0xA3, 0xFE, 0x8D, 0xEF, 0xC8,
|
||||
0x47, 0xEE, 0x45, 0x99, 0xFF, 0xBC, 0x27, 0xA1,
|
||||
0xB9, 0x9E, 0xC4, 0xC5, 0xD5, 0xC3, 0xDC, 0x22,
|
||||
0x1A, 0x0A, 0xE5, 0xCF, 0xD8, 0x5F, 0x76, 0x62,
|
||||
0xE3, 0xC1, 0x7D, 0xB5, 0xFA, 0x66, 0x7C, 0x5E,
|
||||
0xB8, 0x85, 0x43, 0x70, 0x90, 0x4E, 0x37, 0x65,
|
||||
0x62, 0xDE, 0x60, 0xAA, 0xFB, 0x61, 0x4D, 0xF0,
|
||||
0x7A, 0x98, 0x49, 0x0B, 0x91, 0x57, 0xC8, 0x3E,
|
||||
0x5D, 0x07, 0x9C, 0x17, 0x3E, 0x7D, 0x4C, 0x63,
|
||||
0x3A, 0x05, 0x5C, 0x8B, 0x49, 0x05, 0xCA, 0xEA,
|
||||
0x4C, 0x8E, 0xA7, 0x75, 0xE5, 0xFA, 0x45, 0xCF,
|
||||
0x96, 0xD3, 0x81, 0xEA, 0x61, 0x48, 0x8F, 0x3E,
|
||||
0x45, 0xEB, 0x7B, 0xC8, 0xE7, 0x19, 0x8D, 0xFA,
|
||||
0x55, 0xBF, 0x7B, 0xE8, 0x2E, 0xDE, 0xB2, 0xBF,
|
||||
0xD1, 0x2D, 0xA5, 0xEA, 0x0A, 0x04, 0xB0, 0x03,
|
||||
0x59, 0x26, 0x15, 0x78, 0xDC, 0xD1, 0x9F, 0xCD,
|
||||
0x58, 0xAC, 0x29, 0x01, 0x27, 0x24, 0x02, 0xBE,
|
||||
0xF4, 0xD6, 0xA3, 0xFE, 0x8D, 0xEF, 0xC8, 0x47,
|
||||
0xEE, 0x45, 0x99, 0xFF, 0xBC, 0x27, 0xA1, 0xB9,
|
||||
0x9E, 0xC4, 0xC5, 0xD5, 0xC3, 0xDC, 0x22, 0x1A,
|
||||
0x0A, 0xE5, 0xCF, 0xD8, 0x5F, 0x76, 0x62, 0xE3,
|
||||
0xC1, 0x7D, 0xB5, 0xFA, 0x66, 0x7C, 0x5E, 0xB8,
|
||||
0x85, 0x43, 0x70, 0x90, 0x4E, 0x37, 0x65, 0x62,
|
||||
0xDE, 0x60, 0xAA, 0xFB, 0x61, 0x4D, 0xF0, 0x7A,
|
||||
0x98, 0x49, 0x0B, 0x91, 0x57, 0xC8, 0x3E, 0x5D,
|
||||
0x07, 0x9C, 0x17, 0x3E, 0x7D, 0x4C, 0x63, 0x3A,
|
||||
0x05, 0x5C, 0x8B, 0x49, 0x05, 0xCA, 0xEA, 0x4C,
|
||||
0x8E, 0xA7, 0x75, 0xE5, 0xFA, 0x45, 0xCF, 0x96,
|
||||
0xD3, 0x81, 0xEA, 0x61, 0x48, 0x8F, 0x3E, 0x45,
|
||||
0xEB, 0x7B, 0xC8, 0xE7, 0x19, 0x8D, 0xFA, 0x55,
|
||||
0xBF, 0x7B, 0xE8, 0x2E, 0xDE, 0xB2, 0xBF, 0xD1,
|
||||
0x2D, 0xA5, 0xEA, 0x0A, 0x04, 0xB0, 0x03, 0x59,
|
||||
0x26, 0x15, 0x78, 0xDC, 0xD1, 0x9F, 0xCD, 0x58,
|
||||
0xAC, 0x29, 0x01, 0x27, 0x24, 0x02, 0xBE, 0xF4,
|
||||
0xD6, 0xA3, 0xFE, 0x8D, 0xEF, 0xC8, 0x47, 0xEE,
|
||||
0x45, 0x99, 0xFF, 0xBC, 0x27, 0xA1, 0xB9, 0x9E,
|
||||
0xC4, 0xC5, 0xD5, 0xC3, 0xDC, 0x22, 0x1A, 0x0A,
|
||||
0xE5, 0xCF, 0xD8, 0x5F, 0x76, 0x62, 0xE3, 0xC1,
|
||||
0x7D, 0xB5, 0xFA, 0x66, 0x7C, 0x5E, 0xB8, 0x85,
|
||||
0x43, 0x70, 0x90, 0x4E, 0x37, 0x65, 0x62, 0xDE,
|
||||
0x60, 0xAA, 0xFB, 0x61, 0x4D, 0xF0, 0x7A, 0x98,
|
||||
0x49, 0x0B, 0x91, 0x57, 0xC8, 0x3E, 0x5D, 0x07,
|
||||
0x9C, 0x17, 0x3E, 0x7D, 0x4C, 0x63, 0x3A, 0x05,
|
||||
0x5C, 0x8B, 0x49, 0x05, 0xCA, 0xEA, 0x4C, 0x8E,
|
||||
0xA7, 0x75, 0xE5, 0xFA, 0x45, 0xCF, 0x96, 0xD3,
|
||||
0x81, 0xEA, 0x61, 0x48, 0x8F, 0x3E, 0x45, 0xEB,
|
||||
0x7B, 0xC8, 0xE7, 0x19, 0x8D, 0xFA, 0x55, 0xBF,
|
||||
0x7B, 0xE8, 0x2E, 0xDE, 0xB2, 0xBF, 0xD1, 0x2D,
|
||||
0xA5, 0xEA, 0x0A, 0x04, 0xB0, 0x03, 0x59, 0x26,
|
||||
0x15, 0x78, 0xDC, 0xD1, 0x9F, 0xCD, 0x58, 0xAC,
|
||||
0x29, 0x01, 0x27, 0x24, 0x02, 0xBE, 0xF4, 0xD6,
|
||||
0xA3, 0xFE, 0x8D, 0xEF, 0xC8, 0x47, 0xEE, 0x45,
|
||||
0x99, 0xFF, 0xBC, 0x27, 0xA1, 0xB9, 0x9E, 0xC4,
|
||||
0xC5, 0xD5, 0xC3, 0xDC, 0x22, 0x1A, 0x0A, 0xE5,
|
||||
0xCF, 0xD8, 0x5F, 0x76, 0x62, 0xE3, 0xC1, 0x7D,
|
||||
0xB5, 0xFA, 0x66, 0x7C, 0x5E, 0xB8, 0x85, 0x43,
|
||||
0x70, 0x90, 0x4E, 0x37, 0x65, 0x62, 0xDE, 0x60,
|
||||
0xAA, 0xFB, 0x61, 0x4D, 0xF0, 0x7A, 0x98, 0x49,
|
||||
0x0B, 0x91, 0x57, 0xC8, 0x3E, 0x5D, 0x07, 0x9C,
|
||||
0x17, 0x3E, 0x7D, 0x4C, 0x63, 0x3A, 0x05, 0x5C,
|
||||
0x8B, 0x49, 0x05, 0xCA, 0xEA, 0x4C, 0x8E, 0xA7,
|
||||
0x75, 0xE5, 0xFA, 0x45, 0xCF, 0x96, 0xD3, 0x81,
|
||||
0xEA, 0x61, 0x48, 0x8F, 0x3E, 0x45, 0xEB, 0x7B,
|
||||
0xC8, 0xE7, 0x19, 0x8D, 0xFA, 0x55, 0xBF, 0x7B,
|
||||
0xE8, 0x2E, 0xDE, 0xB2, 0xBF, 0xD1, 0x2D, 0xA5,
|
||||
0xEA, 0x0A, 0x04, 0xB0, 0x03, 0x59, 0x26, 0x15,
|
||||
0x78, 0xDC, 0xD1, 0x9F, 0xCD, 0x58, 0xAC, 0x29,
|
||||
0x01, 0x27, 0x24, 0x02, 0xBE, 0xF4, 0xD6, 0xA3,
|
||||
0xFE, 0x8D, 0xEF, 0xC8, 0x47, 0xEE, 0x45, 0x99,
|
||||
0xFF, 0xBC, 0x27, 0xA1, 0xB9, 0x9E, 0xC4, 0xC5,
|
||||
0xD5, 0xC3, 0xDC, 0x22, 0x1A, 0x0A, 0xE5, 0xCF,
|
||||
0xD8, 0x5F, 0x76, 0x62, 0xE3, 0xC1, 0x7D, 0xB5,
|
||||
0xFA, 0x66, 0x7C, 0x5E, 0xB8, 0x85, 0x43, 0x70,
|
||||
0x90, 0x4E, 0x37, 0x65, 0x62, 0xDE, 0x60, 0xAA,
|
||||
0xFB, 0x61, 0x4D, 0xF0, 0x7A, 0x98, 0x49, 0x0B,
|
||||
0x91, 0x57, 0xC8, 0x3E, 0x5D, 0x07, 0x9C, 0x17,
|
||||
0x3E, 0x7D, 0x4C, 0x63, 0x3A, 0x05, 0x5C, 0x8B,
|
||||
0x49, 0x05, 0xCA, 0xEA, 0x4C, 0x8E, 0xA7, 0x75,
|
||||
0xE5, 0xFA, 0x45, 0xCF, 0x96, 0xD3, 0x81, 0xEA,
|
||||
0x61, 0x48, 0x8F, 0x3E, 0x45, 0xEB, 0x7B, 0xC8,
|
||||
0xE7, 0x19, 0x8D, 0xFA, 0x55, 0xBF, 0x7B, 0xE8,
|
||||
0x2E, 0xDE, 0xB2, 0xBF, 0xD1, 0x2D, 0xA5, 0xEA,
|
||||
0x0A, 0x04, 0xB0, 0x03, 0x59, 0x26, 0x15, 0x78,
|
||||
0xDC, 0xD1, 0x9F, 0xCD, 0x58, 0xAC, 0x29, 0x01,
|
||||
0x27, 0x24, 0x02, 0xBE, 0xF4, 0xD6, 0xA3, 0xFE,
|
||||
0x8D, 0xEF, 0xC8, 0x47, 0xEE, 0x45, 0x99, 0xFF,
|
||||
0xBC, 0x27, 0xA1, 0xB9, 0x9E, 0xC4, 0xC5, 0xD5,
|
||||
0xC3, 0xDC, 0x22, 0x1A, 0x0A, 0xE5, 0xCF, 0xD8,
|
||||
0x5F, 0x76, 0x62, 0xE3, 0xC1, 0x7D, 0xB5, 0xFA,
|
||||
0x66, 0x7C, 0x5E, 0xB8, 0x85, 0x43, 0x70, 0x90,
|
||||
0x4E, 0x37, 0x65, 0x62, 0xDE, 0x60, 0xAA, 0xFB,
|
||||
0x61, 0x4D, 0xF0, 0x7A, 0x98, 0x49, 0x0B, 0x91,
|
||||
0x57, 0xC8, 0x3E, 0x5D, 0x07, 0x9C, 0x17, 0x3E,
|
||||
0x7D, 0x4C, 0x63, 0x3A, 0x05, 0x5C, 0x8B, 0x49,
|
||||
0x05, 0xCA, 0xEA, 0x4C, 0x8E, 0xA7, 0x75, 0xE5,
|
||||
0xFA, 0x45, 0xCF, 0x96, 0xD3, 0x81, 0xEA, 0x61,
|
||||
0x48, 0x8F, 0x3E, 0x45, 0xEB, 0x7B, 0xC8, 0xE7,
|
||||
0x19, 0x8D, 0xFA, 0x55, 0xBF, 0x7B, 0xE8, 0x2E,
|
||||
0xDE, 0xB2, 0xBF, 0xD1, 0x2D, 0xA5, 0xEA, 0x0A,
|
||||
0x04, 0xB0, 0x03, 0x59, 0x26, 0x15, 0x78, 0xDC,
|
||||
0xD1, 0x9F, 0xCD, 0x58, 0xAC, 0x29, 0x01, 0x27,
|
||||
0x24, 0x02, 0xBE, 0xF4, 0xD6, 0xA3, 0xFE, 0x8D,
|
||||
0xEF, 0xC8, 0x47, 0xEE, 0x45, 0x99, 0xFF, 0xBC,
|
||||
0x27, 0xA1, 0xB9, 0x9E, 0xC4, 0xC5, 0xD5, 0xC3,
|
||||
0xDC, 0x22, 0x1A, 0x0A, 0xE5, 0xCF, 0xD8, 0x5F,
|
||||
0x76, 0x62, 0xE3, 0xC1, 0x7D, 0xB5, 0xFA, 0x66,
|
||||
0x7C, 0x5E, 0xB8, 0x85, 0x43, 0x70, 0x90, 0x4E,
|
||||
0x37, 0x65, 0x62, 0xDE, 0x60, 0xAA, 0xFB, 0x61,
|
||||
0x4D, 0xF0, 0x7A, 0x98, 0x49, 0x0B, 0x91, 0x57,
|
||||
0xC8, 0x3E, 0x5D, 0x07, 0x9C, 0x17, 0x3E, 0x7D,
|
||||
0x4C, 0x63, 0x3A, 0x05, 0x5C, 0x8B, 0x49, 0x05,
|
||||
0xCA, 0xEA, 0x4C, 0x8E, 0xA7, 0x75, 0xE5, 0xFA,
|
||||
0x45, 0xCF, 0x96, 0xD3, 0x81, 0xEA, 0x61, 0x48,
|
||||
0x8F, 0x3E, 0x45, 0xEB, 0x7B, 0xC8, 0xE7, 0x19,
|
||||
0x8D, 0xFA, 0x55, 0xBF, 0x7B, 0xE8, 0x2E, 0xDE,
|
||||
0xB2, 0xBF, 0xD1, 0x2D, 0xA5, 0xEA, 0x0A, 0x04,
|
||||
0xB0, 0x03, 0x59, 0x26, 0x15, 0x78, 0xDC, 0xD1,
|
||||
0x9F, 0xCD, 0x58, 0xAC, 0x29, 0x01, 0x27, 0x24,
|
||||
0x02, 0xBE, 0xF4, 0xD6, 0xA3, 0xFE, 0x8D, 0xEF,
|
||||
0xC8, 0x47, 0xEE, 0x45, 0x99, 0xFF, 0xBC, 0x27,
|
||||
0xA1, 0xB9, 0x9E, 0xC4, 0xC5, 0xD5, 0xC3, 0xDC,
|
||||
0x22, 0x1A, 0x0A, 0xE5, 0xCF, 0xD8, 0x5F, 0x76,
|
||||
0x62, 0xE3, 0xC1, 0x7D, 0xB5, 0xFA, 0x66, 0x7C,
|
||||
0x5E, 0xB8, 0x85, 0x43, 0x70, 0x90, 0x4E, 0x37,
|
||||
0x65, 0x62, 0xDE, 0x60, 0xAA, 0xFB, 0x61, 0x4D,
|
||||
0xF0, 0x7A, 0x98, 0x49, 0x0B, 0x91, 0x57, 0xC8,
|
||||
0x3E, 0x5D, 0x07, 0x9C, 0x17, 0x3E, 0x7D, 0x4C,
|
||||
0x63, 0x3A, 0x05, 0x5C, 0x8B, 0x49, 0x05, 0xCA,
|
||||
0xEA, 0x4C, 0x8E, 0xA7, 0x75, 0xE5, 0xFA, 0x45,
|
||||
0xCF, 0x96, 0xD3, 0x81, 0xEA, 0x61, 0x48, 0x8F,
|
||||
0x3E, 0x45, 0xEB, 0x7B, 0xC8, 0xE7, 0x19, 0x8D,
|
||||
0xFA, 0x55, 0xBF, 0x7B, 0xE8, 0x2E, 0xDE, 0xB2,
|
||||
0xBF, 0xD1, 0x2D, 0xA5, 0xEA, 0x0A, 0x04, 0xB0,
|
||||
0x03, 0x59, 0x26, 0x15, 0x78, 0xDC, 0xD1, 0x9F,
|
||||
0xCD, 0x58, 0xAC, 0x29, 0x01, 0x27, 0x24, 0x02,
|
||||
0xBE, 0xF4, 0xD6, 0xA3, 0xFE, 0x8D, 0xEF, 0xC8,
|
||||
0x47, 0xEE, 0x45, 0x99, 0xFF, 0xBC, 0x27, 0xA1,
|
||||
0xB9, 0x9E, 0xC4, 0xC5, 0xD5, 0xC3, 0xDC, 0x22,
|
||||
0x1A, 0x0A, 0xE5, 0xCF, 0xD8, 0x5F, 0x76, 0x62,
|
||||
0xE3, 0xC1, 0x7D, 0xB5, 0xFA, 0x66, 0x7C, 0x5E,
|
||||
0xB8, 0x85, 0x43, 0x70, 0x90, 0x4E, 0x37, 0x65,
|
||||
0x62, 0xDE, 0x60, 0xAA, 0xFB, 0x61, 0x4D, 0xF0,
|
||||
0x7A, 0x98, 0x49, 0x0B, 0x91, 0x57, 0xC8, 0x3E,
|
||||
0x5D, 0x07, 0x9C, 0x17, 0x3E, 0x7D, 0x4C, 0x63,
|
||||
0x3A, 0x05, 0x5C, 0x8B, 0x49, 0x05, 0xCA, 0xEA,
|
||||
0x4C, 0x8E, 0xA7, 0x75, 0xE5, 0xFA, 0x45, 0xCF,
|
||||
0x96, 0xD3, 0x81, 0xEA, 0x61, 0x48, 0x8F, 0x3E,
|
||||
0x45, 0xEB, 0x7B, 0xC8, 0xE7, 0x19, 0x8D, 0xFA,
|
||||
0x55, 0xBF, 0x7B, 0xE8, 0x2E, 0xDE, 0xB2, 0xBF,
|
||||
0xD1, 0x2D, 0xA5, 0xEA, 0x0A, 0x04, 0xB0, 0x03,
|
||||
0x59, 0x26, 0x15, 0x78, 0xDC, 0xD1, 0x9F, 0xCD,
|
||||
0x58, 0xAC, 0x29, 0x01, 0x27, 0x24, 0x02, 0xBE,
|
||||
0xF4, 0xD6, 0xA3, 0xFE, 0x8D, 0xEF, 0xC8, 0x47,
|
||||
0xEE, 0x45, 0x99, 0xFF, 0xBC, 0x27, 0xA1, 0xB9,
|
||||
0x9E, 0xC4, 0xC5, 0xD5, 0xC3, 0xDC, 0x22, 0x1A,
|
||||
0x0A, 0xE5, 0xCF, 0xD8, 0x5F, 0x76, 0x62, 0xE3,
|
||||
0xC1, 0x7D, 0xB5, 0xFA, 0x66, 0x7C, 0x5E, 0xB8,
|
||||
0x85, 0x43, 0x70, 0x90, 0x4E, 0x37, 0x65, 0x62,
|
||||
0xDE, 0x60, 0xAA, 0xFB, 0x61, 0x4D, 0xF0, 0x7A,
|
||||
0x98, 0x49, 0x0B, 0x91, 0x57, 0xC8, 0x3E, 0x5D,
|
||||
0x07, 0x9C, 0x17, 0x3E, 0x7D, 0x4C, 0x63, 0x3A,
|
||||
0x05, 0x5C, 0x8B, 0x49, 0x05, 0xCA, 0xEA, 0x4C,
|
||||
0x8E, 0xA7, 0x75, 0xE5, 0xFA, 0x45, 0xCF, 0x96,
|
||||
0xD3, 0x81, 0xEA, 0x61, 0x48, 0x8F, 0x3E, 0x45,
|
||||
0xEB, 0x7B, 0xC8, 0xE7, 0x19, 0x8D, 0xFA, 0x55,
|
||||
0xBF, 0x7B, 0xE8, 0x2E, 0xDE, 0xB2, 0xBF, 0xD1,
|
||||
0x2D, 0xA5, 0xEA, 0x0A, 0x04, 0xB0, 0x03, 0x59,
|
||||
0x26, 0x15, 0x78, 0xDC, 0xD1, 0x9F, 0xCD, 0x58,
|
||||
0xAC, 0x29, 0x01, 0x27, 0x24, 0x02, 0xBE, 0xF4,
|
||||
0xD6, 0xA3, 0xFE, 0x8D, 0xEF, 0xC8, 0x47, 0xEE,
|
||||
0x45, 0x99, 0xFF, 0xBC, 0x27, 0xA1, 0xB9, 0x9E,
|
||||
0xC4, 0xC5, 0xD5, 0xC3, 0xDC, 0x22, 0x1A, 0x0A,
|
||||
0xE5, 0xCF, 0xD8, 0x5F, 0x76, 0x62, 0xE3, 0xC1,
|
||||
0x7D, 0xB5, 0xFA, 0x66, 0x7C, 0x5E, 0xB8, 0x85,
|
||||
0x43, 0x70, 0x90, 0x4E, 0x37, 0x65, 0x62, 0xDE,
|
||||
0x60, 0xAA, 0xFB, 0x61, 0x4D, 0xF0, 0x7A, 0x98,
|
||||
0x49, 0x0B, 0x91, 0x57, 0xC8, 0x3E, 0x5D, 0x07,
|
||||
0x9C, 0x17, 0x3E, 0x7D, 0x4C, 0x63, 0x3A, 0x05,
|
||||
0x5C, 0x8B, 0x49, 0x05, 0xCA, 0xEA, 0x4C, 0x8E,
|
||||
0xA7, 0x75, 0xE5, 0xFA, 0x45, 0xCF, 0x96, 0xD3,
|
||||
0x81, 0xEA, 0x61, 0x48, 0x8F, 0x3E, 0x45, 0xEB,
|
||||
0x7B, 0xC8, 0xE7, 0x19, 0x8D, 0xFA, 0x55, 0xBF,
|
||||
0x7B, 0xE8, 0x2E, 0xDE, 0xB2, 0xBF, 0xD1, 0x2D,
|
||||
0xA5, 0xEA, 0x0A, 0x04, 0xB0, 0x03, 0x59, 0x26,
|
||||
0x15, 0x78, 0xDC, 0xD1, 0x9F, 0xCD, 0x58, 0xAC,
|
||||
0x29, 0x01, 0x27, 0x24, 0x02, 0xBE, 0xF4, 0xD6,
|
||||
0xA3, 0xFE, 0x8D, 0xEF, 0xC8, 0x47, 0xEE, 0x45,
|
||||
0x99, 0xFF, 0xBC, 0x27, 0xA1, 0xB9, 0x9E, 0xC4,
|
||||
0xC5, 0xD5, 0xC3, 0xDC, 0x22, 0x1A, 0x0A, 0xE5,
|
||||
0xCF, 0xD8, 0x5F, 0x76, 0x62, 0xE3, 0xC1, 0x7D,
|
||||
0xB5, 0xFA, 0x66, 0x7C, 0x5E, 0xB8, 0x85, 0x43,
|
||||
0x70, 0x90, 0x4E, 0x37, 0x65, 0x62, 0xDE, 0x60,
|
||||
0xAA, 0xFB, 0x61, 0x4D, 0xF0, 0x7A, 0x98, 0x49,
|
||||
0x0B, 0x91, 0x57, 0xC8, 0x3E, 0x5D, 0x07, 0x9C,
|
||||
0x17, 0x3E, 0x7D, 0x4C, 0x63, 0x3A, 0x05, 0x5C,
|
||||
0x8B, 0x49, 0x05, 0xCA, 0xEA, 0x4C, 0x8E, 0xA7,
|
||||
0x75, 0xE5, 0xFA, 0x45, 0xCF, 0x96, 0xD3, 0x81,
|
||||
0xEA, 0x61, 0x48, 0x8F, 0x3E, 0x45, 0xEB, 0x7B,
|
||||
0xC8, 0xE7, 0x19, 0x8D, 0xFA, 0x55, 0xBF, 0x7B,
|
||||
0xE8, 0x2E, 0xDE, 0xB2, 0xBF, 0xD1, 0x2D, 0xA5,
|
||||
0xEA, 0x0A, 0x04, 0xB0, 0x03, 0x59, 0x26, 0x15,
|
||||
0x78, 0xDC, 0xD1, 0x9F, 0xCD, 0x58, 0xAC, 0x29,
|
||||
0x01, 0x27, 0x24, 0x02, 0xBE, 0xF4, 0xD6, 0xA3,
|
||||
0xFE, 0x8D, 0xEF, 0xC8, 0x47, 0xEE, 0x45, 0x99,
|
||||
0xFF, 0xBC, 0x27, 0xA1, 0xB9, 0x9E, 0xC4, 0xC5,
|
||||
0xD5, 0xC3, 0xDC, 0x22, 0x1A, 0x0A, 0xE5, 0xCF,
|
||||
0xD8, 0x5F, 0x76, 0x62, 0xE3, 0xC1, 0x7D, 0xB5,
|
||||
0xFA, 0x66, 0x7C, 0x5E, 0xB8, 0x85, 0x43, 0x70,
|
||||
0x90, 0x4E, 0x37, 0x65, 0x62, 0xDE, 0x60, 0xAA,
|
||||
0xFB, 0x61, 0x4D, 0xF0, 0x7A, 0x98, 0x49, 0x0B,
|
||||
0x91, 0x57, 0xC8, 0x3E, 0x5D, 0x07, 0x9C, 0x17,
|
||||
0x3E, 0x7D, 0x4C, 0x63, 0x3A, 0x05, 0x5C, 0x8B,
|
||||
0x49, 0x05, 0xCA, 0xEA, 0x4C, 0x8E, 0xA7, 0x75,
|
||||
0xE5, 0xFA, 0x45, 0xCF, 0x96, 0xD3, 0x81, 0xEA,
|
||||
0x61, 0x48, 0x8F, 0x3E, 0x45, 0xEB, 0x7B, 0xC8,
|
||||
0xE7, 0x19, 0x8D, 0xFA, 0x55, 0xBF, 0x7B, 0xE8,
|
||||
0x2E, 0xDE, 0xB2, 0xBF, 0xD1, 0x2D, 0xA5, 0xEA,
|
||||
0x0A, 0x04, 0xB0, 0x03, 0x59, 0x26, 0x15, 0x78,
|
||||
0xDC, 0xD1, 0x9F, 0xCD, 0x58, 0xAC, 0x29, 0x01,
|
||||
0x27, 0x24, 0x02, 0xBE, 0xF4, 0xD6, 0xA3, 0xFE,
|
||||
0x8D, 0xEF, 0xC8, 0x47, 0xEE, 0x45, 0x99, 0xFF,
|
||||
0xBC, 0x27, 0xA1, 0xB9, 0x9E, 0xC4, 0xC5, 0xD5,
|
||||
0x7D, 0xC3, 0xEB, 0x22, 0x1A, 0x0A, 0xE5, 0x57,
|
||||
0xCF, 0xA2, 0x5F, 0x76, 0x62, 0xE3, 0xC1, 0x7D,
|
||||
0xB5, 0xFA, 0x66, 0x7C, 0x5E, 0xB8, 0x85, 0x43,
|
||||
0x70, 0x90, 0x4E, 0x37, 0x65, 0x62, 0xDE, 0x60,
|
||||
0xAA, 0xFB, 0x61, 0x4D, 0xF0, 0x7A, 0x98, 0x49,
|
||||
0x0B, 0x91, 0x57, 0xC8, 0x3E, 0x1A, 0x5D, 0xAF,
|
||||
0x9C, 0x17, 0x3E, 0x7D, 0x4C, 0x63, 0x3A, 0x05,
|
||||
0x5C, 0x8B, 0x49, 0x05, 0xCA, 0xEA, 0x4C, 0x8E,
|
||||
0xA7, 0x75, 0xE5, 0xFA, 0x45, 0xCF, 0x96, 0xD3,
|
||||
0x81, 0xEA, 0x61, 0x48, 0x8F, 0x3E, 0x45, 0xEB,
|
||||
0x7B, 0xC8, 0xE7, 0x19, 0x8D, 0xFA, 0x55, 0xBF,
|
||||
0x7B, 0xE8, 0x2E, 0xDE, 0xB2, 0xBF, 0xD1, 0x2D,
|
||||
0xA5, 0xEA, 0x0A, 0x04, 0xB0, 0x03, 0x59, 0x26,
|
||||
0x15, 0x78, 0xDC, 0xD1, 0x9F, 0xCD, 0x58, 0xAC,
|
||||
0x29, 0x01, 0x27, 0x24, 0x02, 0xBE, 0xF4, 0xD6,
|
||||
0xA3, 0xFE, 0x8D, 0xEF, 0xC8, 0x47, 0xEE, 0x45,
|
||||
0x99, 0xFF, 0xBC, 0x27, 0xA1, 0xB9, 0x9E, 0xC4,
|
||||
0xC5, 0xD5, 0xC3, 0xDC, 0x22, 0x1A, 0x0A, 0xE5,
|
||||
0xCF, 0xD8, 0x5F, 0x76, 0x62, 0xE3, 0xC1, 0x7D,
|
||||
0xB5, 0xFA, 0x66, 0x7C, 0x5E, 0xB8, 0x85, 0x43,
|
||||
0x70, 0x90, 0x4E, 0x37, 0x65, 0x62, 0xDE, 0x60,
|
||||
0xAA, 0xFB, 0x61, 0x4D, 0xF0, 0x7A, 0x98, 0x49,
|
||||
0x0B, 0x91, 0x57, 0xC8, 0x3E, 0x5D, 0x07, 0x9C,
|
||||
0x17, 0x3E, 0x7D, 0x4C, 0x63, 0x3A, 0x05, 0x5C,
|
||||
0x8B, 0x49, 0x05, 0xCA, 0xEA, 0x4C, 0x8E, 0xA7,
|
||||
0x75, 0xE5, 0xFA, 0x45, 0xCF, 0x96, 0xD3, 0x81,
|
||||
0xEA, 0x61, 0x48, 0x8F, 0x3E, 0x45, 0xEB, 0x7B,
|
||||
0xC8, 0xE7, 0x19, 0x8D, 0xFA, 0x55, 0xBF, 0x7B,
|
||||
0xE8, 0x2E, 0xDE, 0xB2, 0xBF, 0xD1, 0x2D, 0xA5,
|
||||
0xEA, 0x0A, 0x04, 0xB0, 0x03, 0x59, 0x26, 0x15,
|
||||
0x78, 0xDC, 0xD1, 0x9F, 0x07, 0xCD, 0xD5, 0xAC,
|
||||
0x29, 0x01, 0x27, 0x24, 0x02, 0xBE, 0xF4, 0xD6,
|
||||
0xA3, 0xFE, 0x8D, 0xEF, 0xC8, 0x47, 0xEE, 0x45,
|
||||
0x99, 0xFF, 0xBC, 0x27, 0xA1, 0xB9, 0x9E, 0xC4,
|
||||
0xC5, 0xD5, 0xC3, 0xDC, 0x22, 0x1A, 0x65, 0x0A,
|
||||
0x63, 0xCF, 0xD8, 0x5F, 0x76, 0x62, 0xE3, 0xC1,
|
||||
0x7D, 0xB5, 0xFA, 0x66, 0x7C, 0x5E, 0xB8, 0x85,
|
||||
0x43, 0x70, 0x90, 0x4E, 0x37, 0x65, 0x62, 0xDE,
|
||||
0x60, 0xAA, 0xFB, 0x61, 0x4D, 0xF0, 0x7A, 0x98,
|
||||
0x49, 0x0B, 0x91, 0x57, 0xC8, 0x3E, 0x5D, 0x07,
|
||||
0x9C, 0x17, 0x3E, 0x7D, 0x4C, 0x63, 0x3A, 0x05,
|
||||
0x5C, 0x8B, 0x49, 0x05, 0xCA, 0xEA, 0x4C, 0x8E,
|
||||
0xA7, 0x75, 0xE5, 0xFA, 0x45, 0xCF, 0x96, 0xD3,
|
||||
0x81, 0xEA, 0x61, 0x48, 0x8F, 0x3E, 0x45, 0xEB,
|
||||
0x7B, 0xC8, 0xE7, 0x19, 0x8D, 0xFA, 0x55, 0xBF,
|
||||
0x7B, 0xE8, 0x2E, 0xDE, 0xB2, 0xBF, 0xD1, 0x2D,
|
||||
0xA5, 0xEA, 0x0A, 0x04, 0xB0, 0x03, 0x59, 0x26,
|
||||
0x15, 0x78, 0xDC, 0xD1, 0x9F, 0xCD, 0x58, 0xAC,
|
||||
0x29, 0x01, 0x27, 0x24, 0x02, 0xBE, 0xF4, 0xD6,
|
||||
0xA3, 0xFE, 0x8D, 0xEF, 0xC8, 0x47, 0xEE, 0x45,
|
||||
0x99, 0xFF, 0xBC, 0x27, 0xA1, 0xB9, 0x9E, 0xC4,
|
||||
0xC5, 0xD5, 0xC3, 0x74, 0xDC, 0x10, 0x1A, 0x0A,
|
||||
0xE5, 0xCF, 0xD8, 0x5F, 0x76, 0x62, 0xE3, 0xC1,
|
||||
0x7D, 0xB5, 0xFA, 0x66, 0x7C, 0x5E, 0xB8, 0x85,
|
||||
0x43, 0x70, 0x90, 0x4E, 0x37, 0x65, 0x62, 0xDE,
|
||||
0x60, 0xAA, 0xFB, 0x61, 0x4D, 0xF0, 0x7A, 0x98,
|
||||
0x49, 0x0B, 0x91, 0x57, 0xC8, 0x3E, 0x5D, 0x07,
|
||||
0x9C, 0x17, 0x3E, 0x7D, 0x4C, 0x63, 0x3A, 0x05,
|
||||
0x5C, 0x8B, 0x49, 0x05, 0xCA, 0xEA, 0x4C, 0x8E,
|
||||
0xA7, 0x75, 0xE5, 0xFA, 0x45, 0xCF, 0x96, 0xD3,
|
||||
0x81, 0xEA, 0x61, 0x48, 0x8F, 0x3E, 0x45, 0xEB,
|
||||
0x7B, 0xC8, 0xE7, 0x19, 0x8D, 0xFA, 0x55, 0xBF,
|
||||
0x7B, 0xE8, 0x2E, 0xDE, 0xB2, 0xBF, 0xD1, 0x2D,
|
||||
0xA5, 0xEA, 0x0A, 0x04, 0xB0, 0x03, 0x59, 0x26,
|
||||
0x15, 0x78, 0xDC, 0xD1, 0x9F, 0xCD, 0x58, 0xAC,
|
||||
0x29, 0x01, 0x27, 0x24, 0x02, 0xBE, 0xF4, 0xD6,
|
||||
0xA3, 0xFE, 0x8D, 0xEF, 0xC8, 0x47, 0xEE, 0x45,
|
||||
0x99, 0xFF, 0xBC, 0x27, 0xA1, 0xB9, 0x9E, 0xC4,
|
||||
0xC5, 0xD5, 0xC3, 0xDC, 0x22, 0x1A, 0x0A, 0xE5,
|
||||
0xCF, 0xD8, 0x5F, 0x76, 0x62, 0xE3, 0xC1, 0x7D,
|
||||
0xB5, 0xFA, 0x66, 0x7C, 0x5E, 0xB8, 0x85, 0x43,
|
||||
0x70, 0x90, 0x4E, 0x37, 0x65, 0x62, 0xDE, 0x60,
|
||||
0xAA, 0xFB, 0x61, 0x4D, 0xF0, 0x7A, 0x98, 0x49,
|
||||
0x0B, 0x91, 0x57, 0xC8, 0x3E, 0x5D, 0x07, 0x9C,
|
||||
0x17, 0x3E, 0x7D, 0x4C, 0x63, 0x3A, 0x05, 0x5C,
|
||||
0x8B, 0x49, 0x05, 0xCA, 0xEA, 0x4C, 0x8E, 0xA7,
|
||||
0x75, 0xE5, 0xFA, 0x45, 0xCF, 0x70, 0x96, 0x57,
|
||||
0x81, 0xEA, 0x61, 0x48, 0x8F, 0x3E, 0x45, 0xEB,
|
||||
0x7B, 0xC8, 0xE7, 0x19, 0x8D, 0xFA, 0x55, 0xBF,
|
||||
0x7B, 0xE8, 0x2E, 0xDE, 0xB2, 0xBF, 0xD1, 0x2D,
|
||||
0xA5, 0xEA, 0x0A, 0x04, 0xB0, 0x03, 0x59, 0x26,
|
||||
0x15, 0x78, 0xDC, 0xD1, 0x9F, 0xCD, 0x58, 0xAC,
|
||||
0x29, 0x01, 0x27, 0x24, 0x02, 0xBE, 0xF4, 0xD6,
|
||||
0xA3, 0xFE, 0x8D, 0xEF, 0xC8, 0x47, 0xEE, 0x45,
|
||||
0x99, 0xFF, 0xBC, 0x27, 0xA1, 0xB9, 0x9E, 0xC4,
|
||||
0xC5, 0xD5, 0xC3, 0xDC, 0x22, 0x1A, 0x0A, 0xE5,
|
||||
0xCF, 0xD8, 0x5F, 0x76, 0x62, 0xE3, 0xC1, 0x7D,
|
||||
0xB5, 0xFA, 0x66, 0x7C, 0x5E, 0xB8, 0x85, 0x43,
|
||||
0x70, 0x90, 0x4E, 0x37, 0x65, 0x62, 0xDE, 0x60,
|
||||
0xAA, 0xFB, 0x61, 0x4D, 0xF0, 0x7A, 0x98, 0x49,
|
||||
0x0B, 0x91, 0x57, 0xC8, 0x3E, 0x5D, 0x07, 0x9C,
|
||||
0x17, 0x3E, 0x7D, 0x4C, 0x63, 0x3A, 0x05, 0x5C,
|
||||
0x8B, 0x49, 0x05, 0xCA, 0xEA, 0x4C, 0x8E, 0xA7,
|
||||
0x75, 0xE5, 0xFA, 0x45, 0xCF, 0x96, 0xD3, 0x81,
|
||||
0xEA, 0x61, 0x48, 0x8F, 0x3E, 0x45, 0xEB, 0x7B,
|
||||
0xC8, 0x2C, 0xE7, 0xFA, 0x8D, 0xFA, 0x55, 0xBF,
|
||||
0x7B, 0xE8, 0x2E, 0xDE, 0xB2, 0xBF, 0xD1, 0x2D,
|
||||
0xA5, 0xEA, 0x0A, 0x04, 0xB0, 0x03, 0x59, 0x26,
|
||||
0x15, 0x78, 0xDC, 0xD1, 0x9F, 0xCD, 0x58, 0xAC,
|
||||
0x29, 0x01, 0x27, 0x24, 0x02, 0xBE, 0xF4, 0xD6,
|
||||
0xA3, 0xFE, 0x8D, 0xEF, 0xC8, 0x47, 0xEE, 0x45,
|
||||
0x99, 0xFF, 0xBC, 0x27, 0xA1, 0xB9, 0x9E, 0xC4,
|
||||
0xC5, 0xD5, 0xC3, 0xDC, 0x22, 0x1A, 0x0A, 0xE5,
|
||||
0xCF, 0xD8, 0x5F, 0x76, 0x62, 0xE3, 0xC1, 0x7D,
|
||||
0xB5, 0xFA, 0x66, 0x7C, 0x5E, 0xB8, 0x85, 0x43,
|
||||
0x70, 0x90, 0x4E, 0x37, 0x65, 0x62, 0xDE, 0x60,
|
||||
0xAA, 0xFB, 0x61, 0x4D, 0xF0, 0x7A, 0x98, 0x49,
|
||||
0x0B, 0x91, 0x57, 0xC8, 0x3E, 0x5D, 0x07, 0x9C,
|
||||
0x17, 0x3E, 0x7D, 0x4C, 0x63, 0x3A, 0x05, 0x5C,
|
||||
0x8B, 0x49, 0x05, 0xCA, 0xEA, 0x4C, 0x8E, 0xA7,
|
||||
0x75, 0xE5, 0xFA, 0x45, 0xCF, 0x96, 0xD3, 0x81,
|
||||
0xEA, 0x61, 0x48, 0x8F, 0x3E, 0x45, 0xEB, 0x7B,
|
||||
0xC8, 0xE7, 0x19, 0x8D, 0xFA, 0x55, 0xBF, 0x7B,
|
||||
0xE8, 0x2E, 0xDE, 0xB2, 0xBF, 0xD1, 0x2D, 0xA5,
|
||||
0x51, 0xEA, 0xEA, 0x04, 0xB0, 0x03, 0x59, 0x26,
|
||||
0x15, 0x78, 0xDC, 0xD1, 0x9F, 0xCD, 0x58, 0xAC,
|
||||
0x29, 0x01, 0x27, 0x24, 0x02, 0xBE, 0xF4, 0xD6,
|
||||
0xA3, 0xFE, 0x8D, 0xEF, 0xC8, 0x47, 0xEE, 0x45,
|
||||
0x99, 0xFF, 0xBC, 0x27, 0x6D, 0xA1, 0xA1, 0x9E,
|
||||
0xC4, 0xC5, 0xD5, 0xC3, 0xDC, 0x22, 0x1A, 0x0A,
|
||||
0xE5, 0xCF, 0xD8, 0x5F, 0x76, 0x62, 0xE3, 0xC1,
|
||||
0x7D, 0xB5, 0xFA, 0x66, 0x7C, 0x5E, 0xB8, 0x85,
|
||||
0x43, 0x70, 0x90, 0x4E, 0x37, 0x65, 0x62, 0xDE,
|
||||
0x60, 0xAA, 0xFB, 0x61, 0x4D, 0xF0, 0x7A, 0x98,
|
||||
0x49, 0x0B, 0x91, 0x57, 0xC8, 0x3E, 0x5D, 0x07,
|
||||
0x9C, 0x17, 0x3E, 0x7D, 0x4C, 0x63, 0x3A, 0x05,
|
||||
0x5C, 0x8B, 0x49, 0x05, 0xCA, 0xEA, 0x4C, 0x8E,
|
||||
0xA7, 0x75, 0xE5, 0xFA, 0x45, 0xCF, 0x96, 0xD3,
|
||||
0x81, 0xEA, 0x61, 0x48, 0x8F, 0x3E, 0x45, 0xEB,
|
||||
0x7B, 0xC8, 0xE7, 0x19, 0x8D, 0xFA, 0x55, 0xBF,
|
||||
0x7B, 0x58, 0xE8, 0x8A, 0xDE, 0xB2, 0xBF, 0xD1,
|
||||
0x2D, 0xA5, 0xEA, 0x0A, 0x04, 0xB0, 0x03, 0x59,
|
||||
0x26, 0x15, 0x78, 0xDC, 0xD1, 0x9F, 0xCD, 0x58,
|
||||
0xAC, 0x29, 0x01, 0x27, 0x24, 0x02, 0xBE, 0xF4,
|
||||
0xD6, 0xA3, 0xFE, 0x8D, 0xEF, 0xC8, 0x47, 0xEE,
|
||||
0x45, 0x99, 0xFF, 0xBC, 0x27, 0xA1, 0xB9, 0x9E,
|
||||
0xC4, 0xC5, 0xD5, 0xC3, 0xDC, 0x22, 0x1A, 0x0A,
|
||||
0xE5, 0xCF, 0xD8, 0x5F, 0x76, 0x62, 0xE3, 0xC1,
|
||||
0x7D, 0xB5, 0xFA, 0x66, 0x7C, 0x5E, 0xB8, 0x85,
|
||||
0x43, 0x70, 0x90, 0x4E, 0x37, 0x65, 0x62, 0xDE,
|
||||
0x60, 0xAA, 0xFB, 0x61, 0x4D, 0xF0, 0x7A, 0x98,
|
||||
0x49, 0x0B, 0x91, 0x57, 0xC8, 0x3E, 0x5D, 0x07,
|
||||
0x9C, 0x17, 0x3E, 0x7D, 0x4C, 0x63, 0x3A, 0x05,
|
||||
0x5C, 0x8B, 0x49, 0x05, 0xCA, 0xEA, 0x4C, 0x8E,
|
||||
0xA7, 0x75, 0xE5, 0xFA, 0x45, 0xCF, 0x96, 0xD3,
|
||||
0x81, 0xEA, 0x61, 0x48, 0x8F, 0x3E, 0x45, 0xEB,
|
||||
0x7B, 0xC8, 0xE7, 0x19, 0x8D, 0xFA, 0x55, 0xBF,
|
||||
0x7B, 0xE8, 0x2E, 0xDE, 0xB2, 0xBF, 0xD1, 0x2D,
|
||||
0xA5, 0xEA, 0x0A, 0x04, 0xB0, 0x03, 0x59, 0x26,
|
||||
0x15, 0x78, 0xDC, 0xD1, 0x9F, 0xCD, 0x58, 0xAC,
|
||||
0x29, 0x01, 0x27, 0x24, 0x02, 0xBE, 0xF4, 0xD6,
|
||||
0xA3, 0xFE, 0x8D, 0xEF, 0xC8, 0x47, 0xEE, 0x45,
|
||||
0x99, 0xFF, 0xBC, 0x27, 0xA1, 0xB9, 0x9E, 0xC4,
|
||||
0xC5, 0xD5, 0xC3, 0xDC, 0x72, 0x22, 0x0D, 0x0A,
|
||||
0xE5, 0xCF, 0xD8, 0x5F, 0x76, 0x62, 0xE3, 0xC1,
|
||||
0x7D, 0xB5, 0xFA, 0x66, 0x7C, 0x5E, 0xB8, 0x85,
|
||||
0x43, 0x70, 0x90, 0x4E, 0x37, 0x65, 0x62, 0xDE,
|
||||
0x60, 0xAA, 0xFB, 0x61, 0x4D, 0xF0, 0x7A, 0x98,
|
||||
0x51, 0x49, 0xC9, 0x91, 0x57, 0xC8, 0x3E, 0x5D,
|
||||
0x07, 0x9C, 0x17, 0x3E, 0x7D, 0x4C, 0x63, 0x3A,
|
||||
0x05, 0x5C, 0x8B, 0x49, 0x05, 0xCA, 0xEA, 0x4C,
|
||||
0x8E, 0xA7, 0x75, 0xE5, 0xFA, 0x45, 0xCF, 0x96,
|
||||
0xD3, 0x81, 0xEA, 0x61, 0x48, 0x8F, 0x3E, 0x45,
|
||||
0xEB, 0x7B, 0xC8, 0xE7, 0x19, 0x8D, 0xFA, 0x55,
|
||||
0xBF, 0x7B, 0xE8, 0x2E, 0xDE, 0xB2, 0xBF, 0xD1,
|
||||
0x2D, 0xA5, 0xEA, 0x0A, 0x04, 0xB0, 0x03, 0x59,
|
||||
0x26, 0x15, 0x78, 0xDC, 0xD1, 0x9F, 0xCD, 0x58,
|
||||
0xAC, 0x29, 0x01, 0x27, 0x24, 0x02, 0xBE, 0xF4,
|
||||
0xD6, 0xA3, 0xFE, 0x8D, 0xEF, 0xC8, 0x47, 0xEE,
|
||||
0x45, 0x99, 0xFF, 0xBC, 0x27, 0xA1, 0xB9, 0x9E,
|
||||
0xC4, 0xC5, 0xD5, 0xC3, 0xDC, 0x22, 0x1A, 0x0A,
|
||||
0xE5, 0xCF, 0xD8, 0x5F, 0x76, 0x62, 0xE3, 0xC1,
|
||||
0x7D, 0xB5, 0xFA, 0x66, 0x7C, 0x5E, 0xB8, 0x85,
|
||||
0x43, 0x70, 0x90, 0x4E, 0x37, 0x65, 0x62, 0xDE,
|
||||
0x60, 0xAA, 0xFB, 0x61, 0x4D, 0xF0, 0x7A, 0x98,
|
||||
0x49, 0x0B, 0x91, 0x57, 0xC8, 0x3E, 0x5D, 0x07,
|
||||
0x9C, 0x17, 0x3E, 0x7D, 0x4C, 0x63, 0x3A, 0x05,
|
||||
0x5C, 0x8B, 0x49, 0x05, 0xCA, 0xEA, 0x4C, 0x8E,
|
||||
0xA7, 0x75, 0xE5, 0xFA, 0x45, 0xCF, 0x96, 0xD3,
|
||||
0x81, 0xEA, 0x61, 0x48, 0x8F, 0x3E, 0x45, 0xEB,
|
||||
0x7B, 0xC8, 0xE7, 0x19, 0x8D, 0xFA, 0x70, 0x55,
|
||||
0x70, 0x7B, 0xE8, 0x2E, 0xDE, 0xB2, 0xBF, 0xD1,
|
||||
0x2D, 0xA5, 0xEA, 0x0A, 0x04, 0xB0, 0x03, 0x59,
|
||||
0x26, 0x15, 0x78, 0xDC, 0xD1, 0x9F, 0xCD, 0x58,
|
||||
0xAC, 0x29, 0x01, 0x27, 0x24, 0x02, 0xBE, 0xF4,
|
||||
0xD6, 0xA3, 0xFE, 0x8D, 0xEF, 0xC8, 0x47, 0xEE,
|
||||
0x45, 0x99, 0xFF, 0xBC, 0x27, 0xA1, 0xB9, 0x9E,
|
||||
0x1E, 0xC4, 0xDA, 0xD5, 0xC3, 0xDC, 0x22, 0x1A,
|
||||
0x0A, 0xE5, 0xCF, 0xD8, 0x5F, 0x76, 0x62, 0xE3,
|
||||
0xC1, 0x7D, 0xB5, 0xFA, 0x66, 0x7C, 0x5E, 0xB8,
|
||||
0x85, 0x43, 0x70, 0x90, 0x4E, 0x37, 0x65, 0x62,
|
||||
0xDE, 0x60, 0xAA, 0xFB, 0x61, 0x4D, 0xF0, 0x7A,
|
||||
0x98, 0x49, 0x0B, 0x91, 0x57, 0xC8, 0x3E, 0x5D,
|
||||
0x07, 0x9C, 0x17, 0x3E, 0x7D, 0x4C, 0x63, 0x3A,
|
||||
0x05, 0x5C, 0x8B, 0x49, 0x05, 0xCA, 0xEA, 0x4C,
|
||||
0x76, 0x8E, 0x12, 0x75, 0xE5, 0xFA, 0x45, 0xCF,
|
||||
0x96, 0xD3, 0x81, 0xEA, 0x61, 0x48, 0x8F, 0x3E,
|
||||
0x45, 0xEB, 0x7B, 0xC8, 0xE7, 0x19, 0x8D, 0xFA,
|
||||
0x55, 0xBF, 0x7B, 0xE8, 0x2E, 0xDE, 0xB2, 0xBF,
|
||||
0xD1, 0x2D, 0xA5, 0xEA, 0x0A, 0x04, 0xB0, 0x03,
|
||||
0x59, 0x26, 0x15, 0x78, 0xDC, 0xD1, 0x9F, 0xCD,
|
||||
0x58, 0xAC, 0x29, 0x01, 0x27, 0x24, 0x02, 0xBE,
|
||||
0xF4, 0xD6, 0xA3, 0xFE, 0x8D, 0xEF, 0xC8, 0x47,
|
||||
0xEE, 0x45, 0x99, 0xFF, 0xBC, 0x27, 0xA1, 0xB9,
|
||||
0x9E, 0xC4, 0xC5, 0xD5, 0xC3, 0xDC, 0x22, 0x1A,
|
||||
0x0A, 0xE5, 0xCF, 0xD8, 0x5F, 0x76, 0x62, 0xE3,
|
||||
0xC1, 0x7D, 0xB5, 0x95, 0x32, 0x86, 0x72, 0x41,
|
||||
0x37, 0xC8, 0xCB, 0x9D, 0x31, 0xBE, 0x6C, 0xF7,
|
||||
0xB1, 0xCA, 0x62, 0x6B, 0x39, 0x3D, 0xF1, 0xA4,
|
||||
0x06, 0x1F, 0x2E, 0xC2, 0xCF, 0x96, 0xD5, 0x7F,
|
||||
0xEC, 0x5F, 0x4A, 0x8D, 0xDB, 0x0F, 0x60, 0x8B,
|
||||
0x1A, 0x36, 0xB8, 0x74, 0x54, 0xF1, 0x47, 0x96,
|
||||
0x04, 0xB5, 0xCB, 0xC7, 0x08, 0x5F, 0x55, 0xB5,
|
||||
0x84, 0x75, 0xA3, 0x70, 0x4E, 0xC2, 0xA7, 0x8A,
|
||||
0x9D, 0x7F, 0x6F, 0x0F, 0x9C, 0xE7, 0x09, 0x9F,
|
||||
0xE1, 0xAA, 0x61, 0x94, 0xAB, 0x0F, 0x81, 0xCF,
|
||||
0x7B, 0x56, 0x8D, 0xE1, 0x6D, 0x38, 0x3E, 0x57,
|
||||
0xA7, 0x61, 0xC5, 0x78, 0x6D, 0xBA, 0x53, 0xA1,
|
||||
0xA4, 0xE6, 0xDA, 0xFE, 0x0A, 0xDA, 0xA7, 0x2F,
|
||||
0xF9, 0xCA, 0xE4, 0x85, 0x21, 0x2B, 0x60, 0x96,
|
||||
0x42, 0xDF, 0x1E, 0x20, 0x69, 0x88, 0x54, 0xC5,
|
||||
0xDB, 0x8C, 0xB0, 0x39, 0x57, 0xD8, 0xFC, 0xA6,
|
||||
0xA3, 0xB6, 0x0A, 0xEF, 0xF8, 0x7E, 0x2F, 0x81,
|
||||
0xA9, 0xD6, 0x50, 0x1C, 0xB5, 0xD5, 0x57, 0x7B,
|
||||
0xF3, 0xBD, 0x22, 0x40, 0x18, 0x80, 0xA0, 0x43,
|
||||
0x14, 0x1D, 0xCF, 0x55, 0xAF, 0x24, 0x9F, 0xEE,
|
||||
0x35, 0xDB, 0x1F, 0x50, 0x07, 0x96, 0x50, 0xD1,
|
||||
0x01, 0x37, 0x14, 0xE7, 0xD3, 0xA1, 0xCA, 0xF4,
|
||||
0x75, 0xCF, 0xDE, 0x8D, 0x15, 0x6D, 0x4D, 0xF6,
|
||||
0x41, 0xA0, 0xF6, 0x62, 0x32, 0x4B, 0x78, 0xA8,
|
||||
0xC6, 0x62, 0x03, 0xA1, 0x10, 0xE2, 0xA3, 0x9B,
|
||||
0x24, 0xCB, 0x5A, 0xA8, 0x2D, 0x94, 0x96, 0x57,
|
||||
0x97, 0x71, 0xAE, 0x30, 0x2D, 0x31, 0x2B, 0xCC,
|
||||
0xF7, 0x3F, 0x09, 0x8F, 0x8C, 0x5F, 0xBE, 0x4C,
|
||||
0xB0, 0xEC, 0xA5, 0x38, 0xBB, 0xA7, 0x55, 0x9E,
|
||||
0x35, 0x89, 0xA3, 0x44, 0xE2, 0xEA, 0xEF, 0x1E,
|
||||
0x8C, 0x65, 0x83, 0x24, 0x28, 0x65, 0x8F, 0x4B,
|
||||
0x6B, 0x96, 0xDF, 0x0D, 0xCA, 0xB8, 0xB0, 0xB0,
|
||||
0xE0, 0xB0, 0x28, 0x6A, 0x57, 0x1E, 0xEA, 0xD4,
|
||||
0x06, 0x67, 0x1A, 0x8D, 0xFC, 0x53, 0x2A, 0xA9,
|
||||
0xE4, 0xAB, 0x2F, 0x61, 0x62, 0xA8, 0x64, 0xF6,
|
||||
0xE4, 0x95, 0xAA, 0x10, 0x19, 0x37, 0xB7, 0xDC,
|
||||
0xEC, 0xB5, 0x26, 0xD4, 0xED, 0xE4, 0x5E, 0xAD,
|
||||
0xF6, 0xFF, 0x14, 0x6A, 0x1A, 0xF5, 0x94, 0x80,
|
||||
0x39, 0x78, 0x1C, 0xC6, 0xC4, 0xD6, 0xC4, 0xDD,
|
||||
0x88, 0x4F, 0x66, 0x9D, 0xA4, 0x80, 0xA5, 0x0B,
|
||||
0xE7, 0x9C, 0x3F, 0x4A, 0x1A, 0x1B, 0x39, 0x82,
|
||||
0x45, 0x07, 0xF7, 0x24, 0x23, 0x9D, 0x21, 0x69,
|
||||
0x21, 0xB9, 0x06, 0xF5, 0x57, 0xBC, 0x17, 0xB1,
|
||||
0x3D, 0xB9, 0x11, 0xEB, 0xCD, 0x42, 0xF5, 0x3C,
|
||||
0xD6, 0x25, 0xAF, 0xDC, 0x4E, 0xEF, 0x7B, 0x30,
|
||||
0x7F, 0xAB, 0x39, 0xEF, 0x40, 0x6A, 0xFA, 0xAE,
|
||||
0x66, 0x2B, 0xE3, 0xAD, 0xC6, 0x31, 0x68, 0xF7,
|
||||
0x4B, 0x30, 0x37, 0x5A, 0x6C, 0x68, 0x75, 0x33,
|
||||
0xAB, 0xE8, 0x74, 0x9A, 0x37, 0xDF, 0x74, 0x62,
|
||||
0xE5, 0xBF, 0xE8, 0x48, 0xC5, 0x3C, 0xF7, 0xD2,
|
||||
0xA9, 0xF4, 0x9B, 0xDD, 0x79, 0x5E, 0xE9, 0xBB,
|
||||
0x87, 0xA7, 0xA7, 0x81, 0x73, 0xD8, 0x07, 0xCE,
|
||||
0x4C, 0x85, 0x7D, 0x37, 0x44, 0xB5, 0x16, 0x22,
|
||||
0xE4, 0x6B, 0x9C, 0xD1, 0xEB, 0x80, 0x90, 0x55,
|
||||
0xFB, 0xD7, 0xD7, 0x97, 0x70, 0x18, 0xC6, 0x5C,
|
||||
0x3E, 0x97, 0x65, 0x89, 0xEB, 0x95, 0x46, 0x41,
|
||||
0xC0, 0x3F, 0x8A, 0x41, 0x73, 0x8B, 0x55, 0x93,
|
||||
0x3F, 0x13, 0xB8, 0x32, 0x61, 0xCA, 0x40, 0x28,
|
||||
0x70, 0x1C, 0x28, 0x95, 0x2D, 0x27, 0x34, 0x59,
|
||||
0x07, 0x34, 0x7F, 0xAC, 0xD1, 0x57, 0x13, 0x5B,
|
||||
0x90, 0x13, 0x71, 0xE0, 0x65, 0x0B, 0x9C, 0x7F,
|
||||
0x71, 0x72, 0x6D, 0xA3, 0xD2, 0x1F, 0x19, 0xA5,
|
||||
0x16, 0x76, 0x77, 0x02, 0x46, 0x6C, 0x2D, 0xAF,
|
||||
0x13, 0x4B, 0x3B, 0xC8, 0x33, 0x35, 0xF5, 0x38,
|
||||
0x0D, 0xBA, 0xC8, 0x99, 0x68, 0x53, 0xEE, 0xE4,
|
||||
0xC5, 0x48, 0x1E, 0x15, 0xDA, 0xDF, 0x29, 0xAF,
|
||||
0xAD, 0x16, 0xAD, 0x74, 0x4E, 0x2A, 0xDA, 0x1A,
|
||||
0xEF, 0x66, 0x78, 0x95, 0x4D, 0x07, 0x30, 0xB6,
|
||||
0x41, 0x53, 0x44, 0x27, 0x3E, 0xE9, 0x48, 0xC7,
|
||||
0x3A, 0xF9, 0xD0, 0xAB, 0xF2, 0x9D, 0xDB, 0x7B,
|
||||
0xF3, 0x56, 0xF0, 0x48, 0xFC, 0x39, 0xA8, 0x53,
|
||||
0xA2, 0xC8, 0x8F, 0xD8, 0x12, 0x5B, 0x29, 0x78,
|
||||
0x49, 0xCA, 0x04, 0x65, 0xB4, 0xF3, 0xD1, 0x42,
|
||||
0x5D, 0x6F, 0x34, 0x44, 0x4D, 0x4C, 0x84, 0x7E,
|
||||
0xCF, 0x15, 0x21, 0x31, 0x8E, 0x35, 0x1B, 0x44,
|
||||
0xAA, 0xEE, 0x3B, 0xA2, 0x8C, 0xCC, 0x1C, 0x4E,
|
||||
0xD3, 0xFD, 0xD6, 0x41, 0x2D, 0x9F, 0xBC, 0x02,
|
||||
0xFB, 0x51, 0x5D, 0x42, 0x62, 0x37, 0x39, 0x8D,
|
||||
0x6D, 0x15, 0xFA, 0x8D, 0x0A, 0x89, 0x00, 0x14
|
||||
};
|
||||
BYTE abCert[100] = {
|
||||
0x00, 0x01, 0x00, 0x00, 0x34, 0x00, 0x00, 0x00,
|
||||
0xFB, 0x05, 0xF0, 0xAC, 0x1C, 0x41, 0x84, 0xEC,
|
||||
0x64, 0xE5, 0xDB, 0x29, 0x03, 0x2C, 0xFA, 0x4D,
|
||||
0xA8, 0x95, 0xB7, 0x75, 0x9A, 0xA5, 0x31, 0xEE,
|
||||
0x2E, 0x5B, 0xF0, 0x49, 0x1B, 0x11, 0xD8, 0x27,
|
||||
0x8C, 0x82, 0x76, 0xF7, 0x61, 0x15, 0xB6, 0x2C,
|
||||
0xE7, 0xDB, 0x52, 0x12, 0x88, 0x64, 0xB9, 0x8F,
|
||||
0xB2, 0x13, 0x9C, 0x7C, 0xFE, 0x7C, 0xF4, 0x71,
|
||||
0x1F, 0x1E, 0xFA, 0x67, 0x03, 0x91, 0x43, 0xFC,
|
||||
0x7F, 0x96, 0x8E, 0xD2, 0xEE, 0xF4, 0xA2, 0x8A,
|
||||
0x89, 0xAA, 0xAA, 0x91, 0xA8, 0x19, 0xC3, 0x0A,
|
||||
0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE8,
|
||||
0x00, 0x00, 0x02, 0x0B
|
||||
};
|
||||
//=======================================================
|
571
Src/Plugins/Portable/pmp_p4s/main.cpp
Normal file
571
Src/Plugins/Portable/pmp_p4s/main.cpp
Normal file
@ -0,0 +1,571 @@
|
||||
//#define PLUGIN_NAME "Nullsoft PlaysForSure Plug-in"
|
||||
#define PLUGIN_VERSION L"0.99.1"
|
||||
|
||||
//#define _WIN32_WINNT 0x0400
|
||||
#define _WIN32_DCOM
|
||||
#define INITGUID
|
||||
#include "P4SDevice.h"
|
||||
#include "..\..\General\gen_ml/itemlist.h"
|
||||
#include "key-sub-523.c" // This key is the authentication key.
|
||||
#include "mswmdm.h"
|
||||
#include "deviceprovider.h"
|
||||
#include "../nu/threadpool/api_threadpool.h"
|
||||
//#include "key.c"
|
||||
|
||||
C_ItemList devices;
|
||||
|
||||
// wasabi based services for localisation support
|
||||
api_language *WASABI_API_LNG = 0;
|
||||
HINSTANCE WASABI_API_LNG_HINST = 0, WASABI_API_ORIG_HINST = 0;
|
||||
api_memmgr *memoryManager=0;
|
||||
api_albumart *AGAVE_API_ALBUMART=0;
|
||||
api_threadpool *WASABI_API_THREADPOOL = 0;
|
||||
api_devicemanager *AGAVE_API_DEVICEMANAGER = 0;
|
||||
|
||||
int init();
|
||||
void quit();
|
||||
intptr_t MessageProc(int msg, intptr_t param1, intptr_t param2, intptr_t param3);
|
||||
|
||||
PMPDevicePlugin plugin = {PMPHDR_VER,0,init,quit,MessageProc};
|
||||
|
||||
void checkForDevices(BOOL *killSwitch);
|
||||
void gotDevice(IWMDMDevice* pIDevice);
|
||||
|
||||
CRITICAL_SECTION csTransfers;
|
||||
|
||||
static DeviceProvider *deviceProvider = NULL;
|
||||
|
||||
static IWMDeviceManager3* pIdvMgr=NULL;
|
||||
static DWORD ConnectionNotificationCookie = 0;
|
||||
CSecureChannelClient SAC;
|
||||
IWMDRMDeviceApp * DRMDeviceApp = NULL;
|
||||
|
||||
HANDLE killEvent = 0;
|
||||
|
||||
static int ThreadInitFunc(HANDLE handle, void *user_data, intptr_t param);
|
||||
static int ThreadQuitFunc(HANDLE handle, void *user_data, intptr_t param);
|
||||
|
||||
HANDLE hWinampThread=NULL;
|
||||
|
||||
class MyNotification : public IWMDMNotification {
|
||||
public:
|
||||
virtual HRESULT STDMETHODCALLTYPE WMDMMessage(DWORD dwMessageType, LPCWSTR pwszCanonicalName) {
|
||||
switch(dwMessageType) {
|
||||
case WMDM_MSG_DEVICE_ARRIVAL: // WMDM device has been plugged in
|
||||
//OutputDebugString(L"Device arrived (IWMN)");
|
||||
if (NULL == deviceProvider ||
|
||||
FAILED(deviceProvider->BeginDiscovery(AGAVE_API_DEVICEMANAGER)))
|
||||
{
|
||||
checkForDevices(NULL);
|
||||
}
|
||||
break;
|
||||
case WMDM_MSG_DEVICE_REMOVAL: // WMDM device has been removed
|
||||
//OutputDebugString(L"Device removed (IWMN)");
|
||||
for(int i=0; i<devices.GetSize(); i++) {
|
||||
wchar_t devName[256] = {0};
|
||||
((P4SDevice *)devices.Get(i))->WMDevice->GetCanonicalName(devName,256);
|
||||
if(wcscmp(pwszCanonicalName,devName) == 0) {
|
||||
((P4SDevice *)devices.Get(i))->Close();
|
||||
}
|
||||
}
|
||||
break;
|
||||
case WMDM_MSG_MEDIA_ARRIVAL: // Media has been inserted in WMDM device
|
||||
WMDMMessage(WMDM_MSG_DEVICE_REMOVAL,pwszCanonicalName);
|
||||
WMDMMessage(WMDM_MSG_DEVICE_ARRIVAL,pwszCanonicalName);
|
||||
break;
|
||||
case WMDM_MSG_MEDIA_REMOVAL: // Media is removed from WMDM device
|
||||
WMDMMessage(WMDM_MSG_DEVICE_REMOVAL,pwszCanonicalName);
|
||||
WMDMMessage(WMDM_MSG_DEVICE_ARRIVAL,pwszCanonicalName);
|
||||
break;
|
||||
}
|
||||
return S_OK;
|
||||
}
|
||||
// COM shit
|
||||
ULONG refs;
|
||||
MyNotification() {refs=1;}
|
||||
#define IMPLEMENTS(ifc) if (riid == IID_ ## ifc) { ++refs; *ppvObject = static_cast<ifc *>(this); return S_OK; }
|
||||
virtual HRESULT STDMETHODCALLTYPE QueryInterface(REFIID riid,void __RPC_FAR *__RPC_FAR *ppvObject) {
|
||||
IMPLEMENTS(IWMDMNotification);
|
||||
IMPLEMENTS(IUnknown);
|
||||
*ppvObject = NULL;
|
||||
return E_NOINTERFACE;
|
||||
}
|
||||
virtual ULONG STDMETHODCALLTYPE AddRef() { return ++refs; }
|
||||
virtual ULONG STDMETHODCALLTYPE Release() { int x = --refs; if(!x) delete this; return x; }
|
||||
#undef IMPLEMENTS
|
||||
};
|
||||
|
||||
IWMDMNotification * myNotify=NULL;
|
||||
|
||||
|
||||
template <class api_T>
|
||||
void ServiceBuild(api_T *&api_t, GUID factoryGUID_t)
|
||||
{
|
||||
if (plugin.service)
|
||||
{
|
||||
waServiceFactory *factory = plugin.service->service_getServiceByGuid(factoryGUID_t);
|
||||
if (factory)
|
||||
api_t = reinterpret_cast<api_T *>( factory->getInterface() );
|
||||
}
|
||||
}
|
||||
|
||||
template <class api_T>
|
||||
void ServiceRelease(api_T *api_t, GUID factoryGUID_t)
|
||||
{
|
||||
if (plugin.service && api_t)
|
||||
{
|
||||
waServiceFactory *factory = plugin.service->service_getServiceByGuid(factoryGUID_t);
|
||||
if (factory)
|
||||
factory->releaseInterface(api_t);
|
||||
}
|
||||
api_t = NULL;
|
||||
}
|
||||
|
||||
BOOL
|
||||
QueueThreadFunction(api_threadpool::ThreadPoolFunc func, void *user, intptr_t id)
|
||||
{
|
||||
BOOL result;
|
||||
ThreadID *thread;
|
||||
|
||||
if (NULL == WASABI_API_THREADPOOL)
|
||||
return FALSE;
|
||||
|
||||
thread = WASABI_API_THREADPOOL->ReserveThread(api_threadpool::FLAG_REQUIRE_COM_MT);
|
||||
if (NULL == thread)
|
||||
return FALSE;
|
||||
|
||||
result = (0 == WASABI_API_THREADPOOL->RunFunction(thread, func, user, id,
|
||||
api_threadpool::FLAG_REQUIRE_COM_MT));
|
||||
|
||||
WASABI_API_THREADPOOL->ReleaseThread(thread);
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
static int init2(BOOL runCheck)
|
||||
{
|
||||
HRESULT hr;
|
||||
IComponentAuthenticate* pICompAuth;
|
||||
|
||||
DWORD dwNumProtCount;
|
||||
DWORD* pdwProt=NULL; // This will always be SAC_PROTOCOL_V1.
|
||||
|
||||
hr = CoCreateInstance(CLSID_MediaDevMgr, NULL, CLSCTX_ALL, IID_IComponentAuthenticate, (void **)&pICompAuth);
|
||||
|
||||
// After getting IComponentAuthenticate, the authentication progression follows.
|
||||
if (SUCCEEDED(hr))
|
||||
{
|
||||
hr = SAC.SetCertificate(SAC_CERT_V1, (BYTE*) abCert, sizeof(abCert), (BYTE*) abPVK, sizeof(abPVK));
|
||||
if (SUCCEEDED(hr))
|
||||
{
|
||||
// Set interface for Secure Authenticated Channel
|
||||
// operations. The return value of this function is void.
|
||||
|
||||
SAC.SetInterface(pICompAuth);
|
||||
hr = pICompAuth->SACGetProtocols(&pdwProt, &dwNumProtCount);
|
||||
if (SUCCEEDED(hr))
|
||||
SAC.Authenticate(*pdwProt); //SAC_PROTOCOL_V1
|
||||
//if (SUCCEEDED(hr)) OutputDebugString(L"CSecureChannelClient.Authenticate succeeded\n");
|
||||
}
|
||||
if(pdwProt)
|
||||
CoTaskMemFree(pdwProt);
|
||||
// After authentication has succeeded, call QueryInterface to
|
||||
// get IID_IWMDeviceManager.
|
||||
|
||||
if (FAILED(pICompAuth->QueryInterface(IID_IWMDeviceManager3, (void**)&pIdvMgr)))
|
||||
pIdvMgr = NULL;
|
||||
|
||||
pICompAuth->Release();
|
||||
pICompAuth = NULL;
|
||||
|
||||
if (NULL != pIdvMgr)
|
||||
{
|
||||
pIdvMgr->SetDeviceEnumPreference(ALLOW_OUTOFBAND_NOTIFICATION);
|
||||
IConnectionPointContainer *pIcpc = NULL;
|
||||
if (SUCCEEDED(pIdvMgr->QueryInterface(IID_IConnectionPointContainer,(void**)&pIcpc)))
|
||||
{
|
||||
IConnectionPoint * pICP=NULL;
|
||||
if (SUCCEEDED(pIcpc->FindConnectionPoint(IID_IWMDMNotification,&pICP)))
|
||||
{
|
||||
myNotify = new MyNotification;
|
||||
|
||||
if (FAILED(pICP->Advise(myNotify, &ConnectionNotificationCookie)))
|
||||
ConnectionNotificationCookie = 0;
|
||||
|
||||
pICP->Release();
|
||||
}
|
||||
pIcpc->Release();
|
||||
pIcpc=0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (FALSE != runCheck)
|
||||
checkForDevices(NULL);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void quit2()
|
||||
{
|
||||
if(pIdvMgr)
|
||||
{
|
||||
if (0 != ConnectionNotificationCookie)
|
||||
{
|
||||
IConnectionPointContainer *pIcpc;
|
||||
if (SUCCEEDED(pIdvMgr->QueryInterface(IID_IConnectionPointContainer,(void**)&pIcpc)))
|
||||
{
|
||||
IConnectionPoint * pICP;
|
||||
if (SUCCEEDED(pIcpc->FindConnectionPoint(IID_IWMDMNotification,&pICP)))
|
||||
{
|
||||
pICP->Unadvise(ConnectionNotificationCookie);
|
||||
ConnectionNotificationCookie = 0;
|
||||
pICP->Release();
|
||||
}
|
||||
pIcpc->Release();
|
||||
}
|
||||
}
|
||||
pIdvMgr->Release();
|
||||
pIdvMgr = NULL;
|
||||
}
|
||||
|
||||
if(myNotify)
|
||||
{
|
||||
myNotify->Release();
|
||||
myNotify=0;
|
||||
}
|
||||
|
||||
if(DRMDeviceApp)
|
||||
{
|
||||
DRMDeviceApp->Release();
|
||||
DRMDeviceApp=0;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
int init()
|
||||
{
|
||||
CoInitialize(0);
|
||||
// check OS version
|
||||
OSVERSIONINFO osvi = {0};
|
||||
osvi.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);
|
||||
GetVersionEx(&osvi);
|
||||
if(osvi.dwMajorVersion < 5) return -1;
|
||||
if(osvi.dwMajorVersion == 5 && osvi.dwMinorVersion < 1) return -1;
|
||||
hWinampThread = GetCurrentThread();
|
||||
InitializeCriticalSection(&csTransfers);
|
||||
|
||||
Tataki::Init(plugin.service);
|
||||
|
||||
ServiceBuild(WASABI_API_LNG, languageApiGUID);
|
||||
ServiceBuild(WASABI_API_MEMMGR, memMgrApiServiceGuid);
|
||||
ServiceBuild(WASABI_API_THREADPOOL, ThreadPoolGUID);
|
||||
ServiceBuild(AGAVE_API_ALBUMART, albumArtGUID);
|
||||
ServiceBuild(AGAVE_API_DEVICEMANAGER, DeviceManagerGUID);
|
||||
|
||||
// need to have this initialised before we try to do anything with localisation features
|
||||
WASABI_API_START_LANG(plugin.hDllInstance,PmpP4SLangGUID);
|
||||
|
||||
static wchar_t szDescription[256];
|
||||
StringCchPrintfW(szDescription, ARRAYSIZE(szDescription),
|
||||
WASABI_API_LNGSTRINGW(IDS_NULLSOFT_P4S_PLUGIN), PLUGIN_VERSION);
|
||||
plugin.description = szDescription;
|
||||
|
||||
if (NULL != AGAVE_API_DEVICEMANAGER &&
|
||||
NULL == deviceProvider)
|
||||
{
|
||||
if (SUCCEEDED(DeviceProvider::CreateInstance(&deviceProvider)) &&
|
||||
FAILED(deviceProvider->Register(AGAVE_API_DEVICEMANAGER)))
|
||||
{
|
||||
deviceProvider->Release();
|
||||
deviceProvider = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
// set up thread
|
||||
killEvent = CreateEvent(NULL,TRUE,FALSE,NULL);
|
||||
|
||||
if (FALSE == QueueThreadFunction(ThreadInitFunc, NULL, (NULL == deviceProvider)))
|
||||
init2(NULL == deviceProvider);
|
||||
|
||||
if (NULL != deviceProvider &&
|
||||
FAILED(deviceProvider->BeginDiscovery(AGAVE_API_DEVICEMANAGER)))
|
||||
{
|
||||
checkForDevices(NULL);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
void quit()
|
||||
{
|
||||
SetEvent(killEvent);
|
||||
|
||||
if (NULL != deviceProvider)
|
||||
{
|
||||
deviceProvider->Unregister();
|
||||
deviceProvider->Release();
|
||||
deviceProvider = NULL;
|
||||
}
|
||||
|
||||
HANDLE doneEvent = CreateEvent(NULL, FALSE, FALSE, NULL);
|
||||
|
||||
if (FALSE != QueueThreadFunction(ThreadQuitFunc, doneEvent, 0))
|
||||
WaitForSingleObject(doneEvent, INFINITE);
|
||||
else
|
||||
quit2();
|
||||
|
||||
CloseHandle(doneEvent);
|
||||
|
||||
CloseHandle(killEvent);
|
||||
DeleteCriticalSection(&csTransfers);
|
||||
Tataki::Quit();
|
||||
|
||||
ServiceRelease(WASABI_API_LNG, languageApiGUID);
|
||||
ServiceRelease(WASABI_API_MEMMGR, memMgrApiServiceGuid);
|
||||
ServiceRelease(WASABI_API_THREADPOOL, ThreadPoolGUID);
|
||||
ServiceRelease(AGAVE_API_ALBUMART, albumArtGUID);
|
||||
ServiceRelease(AGAVE_API_DEVICEMANAGER, DeviceManagerGUID);
|
||||
|
||||
CoUninitialize();
|
||||
}
|
||||
|
||||
|
||||
|
||||
void newDeviceAvaliable(IWMDMDevice3* pIDevice)
|
||||
{
|
||||
HRESULT hr;
|
||||
DWORD dwTypeDev = 0;
|
||||
wchar_t buffer[1024] = {0};
|
||||
|
||||
hr = pIDevice->GetType(&dwTypeDev);
|
||||
if (SUCCEEDED(hr))
|
||||
{
|
||||
if(0 == (WMDM_DEVICE_TYPE_PLAYBACK & dwTypeDev))
|
||||
{
|
||||
return;
|
||||
|
||||
if (FAILED(pIDevice->GetName(buffer,ARRAYSIZE(buffer))))
|
||||
buffer[0] = L'\0';
|
||||
|
||||
int l = wcslen(buffer);
|
||||
|
||||
if(l > 5 &&
|
||||
buffer[l-5] == L' ' &&
|
||||
buffer[l-4] == L'(' &&
|
||||
buffer[l-2] == L':' &&
|
||||
buffer[l-1] == L')')
|
||||
{
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
if(0 == (WMDM_DEVICE_TYPE_STORAGE & dwTypeDev))
|
||||
return;
|
||||
}
|
||||
else
|
||||
return;
|
||||
|
||||
// make sure it's not just a simple mass storage device (we have a separate plugin for this!)
|
||||
PROPVARIANT protocol; // VARIANTs can kiss my ass
|
||||
hr = pIDevice->GetProperty(g_wszWMDMDeviceProtocol, &protocol);
|
||||
if (SUCCEEDED(hr))
|
||||
{
|
||||
bool isUsb = !!(*protocol.puuid == WMDM_DEVICE_PROTOCOL_MSC);
|
||||
PropVariantClear(&protocol);
|
||||
if (isUsb)
|
||||
return;
|
||||
}
|
||||
|
||||
if (SUCCEEDED(pIDevice->GetCanonicalName(buffer, ARRAYSIZE(buffer))))
|
||||
{
|
||||
wchar_t buffer2[ARRAYSIZE(buffer)] = {0};
|
||||
|
||||
for(int i=0; i < devices.GetSize(); i++)
|
||||
{
|
||||
P4SDevice *device = (P4SDevice*)devices.Get(i);
|
||||
if (NULL != device &&
|
||||
NULL != device->WMDevice &&
|
||||
SUCCEEDED(device->WMDevice->GetCanonicalName(buffer2, ARRAYSIZE(buffer2))))
|
||||
{
|
||||
if(wcscmp(buffer, buffer2) == 0)
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if(!DRMDeviceApp)
|
||||
CoCreateInstance(CLSID_WMDRMDeviceApp, NULL, CLSCTX_ALL, IID_IWMDRMDeviceApp, (void **)&DRMDeviceApp);
|
||||
|
||||
bool noMetadata;
|
||||
|
||||
if (0 == (WMDM_DEVICE_TYPE_PLAYBACK & dwTypeDev))
|
||||
{
|
||||
noMetadata = true;
|
||||
}
|
||||
else if (SUCCEEDED(pIDevice->GetManufacturer(buffer, ARRAYSIZE(buffer))) &&
|
||||
NULL != wcsstr(buffer, L"Nokia"))
|
||||
{
|
||||
noMetadata = true;
|
||||
}
|
||||
else
|
||||
noMetadata = false;
|
||||
|
||||
P4SDevice *dev = new P4SDevice(pIDevice,noMetadata);
|
||||
|
||||
//return dev;
|
||||
}
|
||||
|
||||
void checkForDevices(BOOL *killSwitch)
|
||||
{
|
||||
HRESULT hr = S_OK;
|
||||
IWMDMEnumDevice* pIEnumDev;
|
||||
IWMDMDevice* pIDeviceOld;
|
||||
IWMDMDevice3* pIDevice = NULL;
|
||||
unsigned long fetched;
|
||||
if (!pIdvMgr)
|
||||
return;
|
||||
|
||||
hr = pIdvMgr->EnumDevices2(&pIEnumDev); // Query for device enumerator.
|
||||
if (SUCCEEDED(hr))
|
||||
{
|
||||
// If no device is found, S_FALSE is returned, which is still
|
||||
// a success case. Do not use the SUCCEEDED macro.
|
||||
while ((NULL == killSwitch || FALSE == *killSwitch) &&
|
||||
S_OK == pIEnumDev->Next(1, &pIDeviceOld, &fetched))
|
||||
{
|
||||
if(SUCCEEDED(pIDeviceOld->QueryInterface(IID_IWMDMDevice3,(void**)&pIDevice)))
|
||||
{
|
||||
newDeviceAvaliable(pIDevice);
|
||||
pIDevice->Release();
|
||||
}
|
||||
pIDeviceOld->Release();
|
||||
}
|
||||
// We should release this pointer but it appears to make winamp not shut down properly if we do.
|
||||
// This function will only be called a small number of times, so I propose that we don't free it
|
||||
// until this error can be better investigated. --will
|
||||
pIEnumDev->Release();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
static int ThreadInitFunc(HANDLE handle, void *user_data, intptr_t param)
|
||||
{
|
||||
init2((BOOL)param);
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int ThreadQuitFunc(HANDLE handle, void *user_data, intptr_t param)
|
||||
{
|
||||
quit2();
|
||||
|
||||
if (NULL != user_data)
|
||||
SetEvent((HANDLE)user_data);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
intptr_t MessageProc(int msg, intptr_t param1, intptr_t param2, intptr_t param3) {
|
||||
switch(msg) {
|
||||
case PMP_DEVICECHANGE:
|
||||
return 0;
|
||||
case PMP_NO_CONFIG:
|
||||
return TRUE;
|
||||
case PMP_CONFIG:
|
||||
return 0;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
typedef struct { ULONG_PTR param; void * proc; int state; CRITICAL_SECTION lock;} spc ;
|
||||
|
||||
static VOID CALLBACK spc_caller(ULONG_PTR dwParam) {
|
||||
spc * s = (spc*)dwParam;
|
||||
if(!s) return;
|
||||
EnterCriticalSection(&s->lock);
|
||||
if(s->state == -1) { LeaveCriticalSection(&s->lock); DeleteCriticalSection(&s->lock); free(s); return; }
|
||||
s->state = 2;
|
||||
void (CALLBACK *p)(ULONG_PTR dwParam);
|
||||
p = (void (CALLBACK *)(ULONG_PTR dwParam))s->proc;
|
||||
if(p) p(s->param);
|
||||
s->state=1;
|
||||
LeaveCriticalSection(&s->lock);
|
||||
}
|
||||
|
||||
// p must be of type void (CALLBACK *)(ULONG_PTR dwParam). Returns 0 for success.
|
||||
int SynchronousProcedureCall(void * p, ULONG_PTR dwParam) {
|
||||
if(!p) return 1;
|
||||
spc * s = (spc*)calloc(1, sizeof(spc));
|
||||
InitializeCriticalSection(&s->lock);
|
||||
s->param = dwParam;
|
||||
s->proc = p;
|
||||
s->state = 0;
|
||||
if(!QueueUserAPC(spc_caller,hWinampThread,(ULONG_PTR)s)) { DeleteCriticalSection(&s->lock); free(s); return 1; } //failed
|
||||
int i=0, state;
|
||||
do {
|
||||
SleepEx(10,true);
|
||||
EnterCriticalSection(&s->lock);
|
||||
state = s->state;
|
||||
if(i++ == 100) {s->state = -1; return 1;}
|
||||
LeaveCriticalSection(&s->lock);
|
||||
}
|
||||
while(state!=1);
|
||||
DeleteCriticalSection(&s->lock);
|
||||
free(s);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
BOOL FormatResProtocol(const wchar_t *resourceName, const wchar_t *resourceType, wchar_t *buffer, size_t bufferMax)
|
||||
{
|
||||
unsigned long filenameLength;
|
||||
|
||||
if (NULL == resourceName)
|
||||
return FALSE;
|
||||
|
||||
if (FAILED(StringCchCopyExW(buffer, bufferMax, L"res://", &buffer, &bufferMax, 0)))
|
||||
return FALSE;
|
||||
|
||||
filenameLength = GetModuleFileNameW(plugin.hDllInstance, buffer, bufferMax);
|
||||
if (0 == filenameLength || bufferMax == filenameLength)
|
||||
return FALSE;
|
||||
|
||||
buffer += filenameLength;
|
||||
bufferMax -= filenameLength;
|
||||
|
||||
if (NULL != resourceType)
|
||||
{
|
||||
if (FALSE != IS_INTRESOURCE(resourceType))
|
||||
{
|
||||
if (FAILED(StringCchPrintfExW(buffer, bufferMax, &buffer, &bufferMax, 0, L"/#%d", (int)(INT_PTR)resourceType)))
|
||||
return FALSE;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (FAILED(StringCchPrintfExW(buffer, bufferMax, &buffer, &bufferMax, 0, L"/%s", resourceType)))
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
|
||||
if (FALSE != IS_INTRESOURCE(resourceName))
|
||||
{
|
||||
if (FAILED(StringCchPrintfExW(buffer, bufferMax, &buffer, &bufferMax, 0, L"/#%d", (int)(INT_PTR)resourceName)))
|
||||
return FALSE;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (FAILED(StringCchPrintfExW(buffer, bufferMax, &buffer, &bufferMax, 0, L"/%s", resourceName)))
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
extern "C" {
|
||||
__declspec( dllexport ) PMPDevicePlugin * winampGetPMPDevicePlugin(){return &plugin;}
|
||||
__declspec( dllexport ) int winampUninstallPlugin(HINSTANCE hDllInst, HWND hwndDlg, int param) {
|
||||
int i = devices.GetSize();
|
||||
while(i-- > 0) ((Device*)devices.Get(i))->Close();
|
||||
return PMP_PLUGIN_UNINSTALL_NOW;
|
||||
}
|
||||
};
|
BIN
Src/Plugins/Portable/pmp_p4s/mssachlp.lib
Normal file
BIN
Src/Plugins/Portable/pmp_p4s/mssachlp.lib
Normal file
Binary file not shown.
9913
Src/Plugins/Portable/pmp_p4s/mswmdm.h
Normal file
9913
Src/Plugins/Portable/pmp_p4s/mswmdm.h
Normal file
File diff suppressed because it is too large
Load Diff
269
Src/Plugins/Portable/pmp_p4s/mswmdm_i.c
Normal file
269
Src/Plugins/Portable/pmp_p4s/mswmdm_i.c
Normal file
@ -0,0 +1,269 @@
|
||||
|
||||
|
||||
/* this ALWAYS GENERATED file contains the IIDs and CLSIDs */
|
||||
|
||||
/* link this file in with the server and any clients */
|
||||
|
||||
|
||||
/* File created by MIDL compiler version 7.00.0498 */
|
||||
/* Compiler settings for mswmdm.idl:
|
||||
Oicf, W1, Zp8, env=Win32 (32b run)
|
||||
protocol : dce , ms_ext, c_ext, robust
|
||||
error checks: allocation ref bounds_check enum stub_data
|
||||
VC __declspec() decoration level:
|
||||
__declspec(uuid()), __declspec(selectany), __declspec(novtable)
|
||||
DECLSPEC_UUID(), MIDL_INTERFACE()
|
||||
*/
|
||||
//@@MIDL_FILE_HEADING( )
|
||||
|
||||
#pragma warning( disable: 4049 ) /* more than 64k source lines */
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C"{
|
||||
#endif
|
||||
|
||||
|
||||
#include <rpc.h>
|
||||
#include <rpcndr.h>
|
||||
|
||||
#ifdef _MIDL_USE_GUIDDEF_
|
||||
|
||||
#ifndef INITGUID
|
||||
#define INITGUID
|
||||
#include <guiddef.h>
|
||||
#undef INITGUID
|
||||
#else
|
||||
#include <guiddef.h>
|
||||
#endif
|
||||
|
||||
#define MIDL_DEFINE_GUID(type,name,l,w1,w2,b1,b2,b3,b4,b5,b6,b7,b8) \
|
||||
DEFINE_GUID(name,l,w1,w2,b1,b2,b3,b4,b5,b6,b7,b8)
|
||||
|
||||
#else // !_MIDL_USE_GUIDDEF_
|
||||
|
||||
#ifndef __IID_DEFINED__
|
||||
#define __IID_DEFINED__
|
||||
|
||||
typedef struct _IID
|
||||
{
|
||||
unsigned long x;
|
||||
unsigned short s1;
|
||||
unsigned short s2;
|
||||
unsigned char c[8];
|
||||
} IID;
|
||||
|
||||
#endif // __IID_DEFINED__
|
||||
|
||||
#ifndef CLSID_DEFINED
|
||||
#define CLSID_DEFINED
|
||||
typedef IID CLSID;
|
||||
#endif // CLSID_DEFINED
|
||||
|
||||
#define MIDL_DEFINE_GUID(type,name,l,w1,w2,b1,b2,b3,b4,b5,b6,b7,b8) \
|
||||
const type name = {l,w1,w2,{b1,b2,b3,b4,b5,b6,b7,b8}}
|
||||
|
||||
#endif !_MIDL_USE_GUIDDEF_
|
||||
|
||||
MIDL_DEFINE_GUID(IID, IID_IWMDMMetaData,0xEC3B0663,0x0951,0x460a,0x9A,0x80,0x0D,0xCE,0xED,0x3C,0x04,0x3C);
|
||||
|
||||
|
||||
MIDL_DEFINE_GUID(IID, IID_IWMDeviceManager,0x1DCB3A00,0x33ED,0x11d3,0x84,0x70,0x00,0xC0,0x4F,0x79,0xDB,0xC0);
|
||||
|
||||
|
||||
MIDL_DEFINE_GUID(IID, IID_IWMDeviceManager2,0x923E5249,0x8731,0x4c5b,0x9B,0x1C,0xB8,0xB6,0x0B,0x6E,0x46,0xAF);
|
||||
|
||||
|
||||
MIDL_DEFINE_GUID(IID, IID_IWMDeviceManager3,0xaf185c41,0x100d,0x46ed,0xbe,0x2e,0x9c,0xe8,0xc4,0x45,0x94,0xef);
|
||||
|
||||
|
||||
MIDL_DEFINE_GUID(IID, IID_IWMDMStorageGlobals,0x1DCB3A07,0x33ED,0x11d3,0x84,0x70,0x00,0xC0,0x4F,0x79,0xDB,0xC0);
|
||||
|
||||
|
||||
MIDL_DEFINE_GUID(IID, IID_IWMDMStorage,0x1DCB3A06,0x33ED,0x11d3,0x84,0x70,0x00,0xC0,0x4F,0x79,0xDB,0xC0);
|
||||
|
||||
|
||||
MIDL_DEFINE_GUID(IID, IID_IWMDMStorage2,0x1ED5A144,0x5CD5,0x4683,0x9E,0xFF,0x72,0xCB,0xDB,0x2D,0x95,0x33);
|
||||
|
||||
|
||||
MIDL_DEFINE_GUID(IID, IID_IWMDMStorage3,0x97717EEA,0x926A,0x464e,0x96,0xA4,0x24,0x7B,0x02,0x16,0x02,0x6E);
|
||||
|
||||
|
||||
MIDL_DEFINE_GUID(IID, IID_IWMDMStorage4,0xc225bac5,0xa03a,0x40b8,0x9a,0x23,0x91,0xcf,0x47,0x8c,0x64,0xa6);
|
||||
|
||||
|
||||
MIDL_DEFINE_GUID(IID, IID_IWMDMOperation,0x1DCB3A0B,0x33ED,0x11d3,0x84,0x70,0x00,0xC0,0x4F,0x79,0xDB,0xC0);
|
||||
|
||||
|
||||
MIDL_DEFINE_GUID(IID, IID_IWMDMOperation2,0x33445B48,0x7DF7,0x425c,0xAD,0x8F,0x0F,0xC6,0xD8,0x2F,0x9F,0x75);
|
||||
|
||||
|
||||
MIDL_DEFINE_GUID(IID, IID_IWMDMOperation3,0xd1f9b46a,0x9ca8,0x46d8,0x9d,0x0f,0x1e,0xc9,0xba,0xe5,0x49,0x19);
|
||||
|
||||
|
||||
MIDL_DEFINE_GUID(IID, IID_IWMDMProgress,0x1DCB3A0C,0x33ED,0x11d3,0x84,0x70,0x00,0xC0,0x4F,0x79,0xDB,0xC0);
|
||||
|
||||
|
||||
MIDL_DEFINE_GUID(IID, IID_IWMDMProgress2,0x3A43F550,0xB383,0x4e92,0xB0,0x4A,0xE6,0xBB,0xC6,0x60,0xFE,0xFC);
|
||||
|
||||
|
||||
MIDL_DEFINE_GUID(IID, IID_IWMDMProgress3,0x21DE01CB,0x3BB4,0x4929,0xB2,0x1A,0x17,0xAF,0x3F,0x80,0xF6,0x58);
|
||||
|
||||
|
||||
MIDL_DEFINE_GUID(IID, IID_IWMDMDevice,0x1DCB3A02,0x33ED,0x11d3,0x84,0x70,0x00,0xC0,0x4F,0x79,0xDB,0xC0);
|
||||
|
||||
|
||||
MIDL_DEFINE_GUID(IID, IID_IWMDMDevice2,0xE34F3D37,0x9D67,0x4fc1,0x92,0x52,0x62,0xD2,0x8B,0x2F,0x8B,0x55);
|
||||
|
||||
|
||||
MIDL_DEFINE_GUID(IID, IID_IWMDMDevice3,0x6c03e4fe,0x05db,0x4dda,0x9e,0x3c,0x06,0x23,0x3a,0x6d,0x5d,0x65);
|
||||
|
||||
|
||||
MIDL_DEFINE_GUID(IID, IID_IWMDMDeviceSession,0x82af0a65,0x9d96,0x412c,0x83,0xe5,0x3c,0x43,0xe4,0xb0,0x6c,0xc7);
|
||||
|
||||
|
||||
MIDL_DEFINE_GUID(IID, IID_IWMDMEnumDevice,0x1DCB3A01,0x33ED,0x11d3,0x84,0x70,0x00,0xC0,0x4F,0x79,0xDB,0xC0);
|
||||
|
||||
|
||||
MIDL_DEFINE_GUID(IID, IID_IWMDMDeviceControl,0x1DCB3A04,0x33ED,0x11d3,0x84,0x70,0x00,0xC0,0x4F,0x79,0xDB,0xC0);
|
||||
|
||||
|
||||
MIDL_DEFINE_GUID(IID, IID_IWMDMEnumStorage,0x1DCB3A05,0x33ED,0x11d3,0x84,0x70,0x00,0xC0,0x4F,0x79,0xDB,0xC0);
|
||||
|
||||
|
||||
MIDL_DEFINE_GUID(IID, IID_IWMDMStorageControl,0x1DCB3A08,0x33ED,0x11d3,0x84,0x70,0x00,0xC0,0x4F,0x79,0xDB,0xC0);
|
||||
|
||||
|
||||
MIDL_DEFINE_GUID(IID, IID_IWMDMStorageControl2,0x972C2E88,0xBD6C,0x4125,0x8E,0x09,0x84,0xF8,0x37,0xE6,0x37,0xB6);
|
||||
|
||||
|
||||
MIDL_DEFINE_GUID(IID, IID_IWMDMStorageControl3,0xB3266365,0xD4F3,0x4696,0x8D,0x53,0xBD,0x27,0xEC,0x60,0x99,0x3A);
|
||||
|
||||
|
||||
MIDL_DEFINE_GUID(IID, IID_IWMDMObjectInfo,0x1DCB3A09,0x33ED,0x11d3,0x84,0x70,0x00,0xC0,0x4F,0x79,0xDB,0xC0);
|
||||
|
||||
|
||||
MIDL_DEFINE_GUID(IID, IID_IWMDMRevoked,0xEBECCEDB,0x88EE,0x4e55,0xB6,0xA4,0x8D,0x9F,0x07,0xD6,0x96,0xAA);
|
||||
|
||||
|
||||
MIDL_DEFINE_GUID(IID, IID_IWMDMNotification,0x3F5E95C0,0x0F43,0x4ed4,0x93,0xD2,0xC8,0x9A,0x45,0xD5,0x9B,0x81);
|
||||
|
||||
|
||||
MIDL_DEFINE_GUID(IID, IID_IMDServiceProvider,0x1DCB3A10,0x33ED,0x11d3,0x84,0x70,0x00,0xC0,0x4F,0x79,0xDB,0xC0);
|
||||
|
||||
|
||||
MIDL_DEFINE_GUID(IID, IID_IMDServiceProvider2,0xB2FA24B7,0xCDA3,0x4694,0x98,0x62,0x41,0x3A,0xE1,0xA3,0x48,0x19);
|
||||
|
||||
|
||||
MIDL_DEFINE_GUID(IID, IID_IMDServiceProvider3,0x4ed13ef3,0xa971,0x4d19,0x9f,0x51,0x0e,0x18,0x26,0xb2,0xda,0x57);
|
||||
|
||||
|
||||
MIDL_DEFINE_GUID(IID, IID_IMDSPEnumDevice,0x1DCB3A11,0x33ED,0x11d3,0x84,0x70,0x00,0xC0,0x4F,0x79,0xDB,0xC0);
|
||||
|
||||
|
||||
MIDL_DEFINE_GUID(IID, IID_IMDSPDevice,0x1DCB3A12,0x33ED,0x11d3,0x84,0x70,0x00,0xC0,0x4F,0x79,0xDB,0xC0);
|
||||
|
||||
|
||||
MIDL_DEFINE_GUID(IID, IID_IMDSPDevice2,0x420D16AD,0xC97D,0x4e00,0x82,0xAA,0x00,0xE9,0xF4,0x33,0x5D,0xDD);
|
||||
|
||||
|
||||
MIDL_DEFINE_GUID(IID, IID_IMDSPDevice3,0x1a839845,0xfc55,0x487c,0x97,0x6f,0xee,0x38,0xac,0x0e,0x8c,0x4e);
|
||||
|
||||
|
||||
MIDL_DEFINE_GUID(IID, IID_IMDSPDeviceControl,0x1DCB3A14,0x33ED,0x11d3,0x84,0x70,0x00,0xC0,0x4F,0x79,0xDB,0xC0);
|
||||
|
||||
|
||||
MIDL_DEFINE_GUID(IID, IID_IMDSPEnumStorage,0x1DCB3A15,0x33ED,0x11d3,0x84,0x70,0x00,0xC0,0x4F,0x79,0xDB,0xC0);
|
||||
|
||||
|
||||
MIDL_DEFINE_GUID(IID, IID_IMDSPStorage,0x1DCB3A16,0x33ED,0x11d3,0x84,0x70,0x00,0xC0,0x4F,0x79,0xDB,0xC0);
|
||||
|
||||
|
||||
MIDL_DEFINE_GUID(IID, IID_IMDSPStorage2,0x0A5E07A5,0x6454,0x4451,0x9C,0x36,0x1C,0x6A,0xE7,0xE2,0xB1,0xD6);
|
||||
|
||||
|
||||
MIDL_DEFINE_GUID(IID, IID_IMDSPStorage3,0x6C669867,0x97ED,0x4a67,0x97,0x06,0x1C,0x55,0x29,0xD2,0xA4,0x14);
|
||||
|
||||
|
||||
MIDL_DEFINE_GUID(IID, IID_IMDSPStorage4,0x3133b2c4,0x515c,0x481b,0xb1,0xce,0x39,0x32,0x7e,0xcb,0x4f,0x74);
|
||||
|
||||
|
||||
MIDL_DEFINE_GUID(IID, IID_IMDSPStorageGlobals,0x1DCB3A17,0x33ED,0x11d3,0x84,0x70,0x00,0xC0,0x4F,0x79,0xDB,0xC0);
|
||||
|
||||
|
||||
MIDL_DEFINE_GUID(IID, IID_IMDSPObjectInfo,0x1DCB3A19,0x33ED,0x11d3,0x84,0x70,0x00,0xC0,0x4F,0x79,0xDB,0xC0);
|
||||
|
||||
|
||||
MIDL_DEFINE_GUID(IID, IID_IMDSPObject,0x1DCB3A18,0x33ED,0x11d3,0x84,0x70,0x00,0xC0,0x4F,0x79,0xDB,0xC0);
|
||||
|
||||
|
||||
MIDL_DEFINE_GUID(IID, IID_IMDSPObject2,0x3f34cd3e,0x5907,0x4341,0x9a,0xf9,0x97,0xf4,0x18,0x7c,0x3a,0xa5);
|
||||
|
||||
|
||||
MIDL_DEFINE_GUID(IID, IID_IMDSPDirectTransfer,0xc2fe57a8,0x9304,0x478c,0x9e,0xe4,0x47,0xe3,0x97,0xb9,0x12,0xd7);
|
||||
|
||||
|
||||
MIDL_DEFINE_GUID(IID, IID_IMDSPRevoked,0xA4E8F2D4,0x3F31,0x464d,0xB5,0x3D,0x4F,0xC3,0x35,0x99,0x81,0x84);
|
||||
|
||||
|
||||
MIDL_DEFINE_GUID(IID, IID_ISCPSecureAuthenticate,0x1DCB3A0F,0x33ED,0x11d3,0x84,0x70,0x00,0xC0,0x4F,0x79,0xDB,0xC0);
|
||||
|
||||
|
||||
MIDL_DEFINE_GUID(IID, IID_ISCPSecureAuthenticate2,0xB580CFAE,0x1672,0x47e2,0xAC,0xAA,0x44,0xBB,0xEC,0xBC,0xAE,0x5B);
|
||||
|
||||
|
||||
MIDL_DEFINE_GUID(IID, IID_ISCPSecureQuery,0x1DCB3A0D,0x33ED,0x11d3,0x84,0x70,0x00,0xC0,0x4F,0x79,0xDB,0xC0);
|
||||
|
||||
|
||||
MIDL_DEFINE_GUID(IID, IID_ISCPSecureQuery2,0xEBE17E25,0x4FD7,0x4632,0xAF,0x46,0x6D,0x93,0xD4,0xFC,0xC7,0x2E);
|
||||
|
||||
|
||||
MIDL_DEFINE_GUID(IID, IID_ISCPSecureExchange,0x1DCB3A0E,0x33ED,0x11d3,0x84,0x70,0x00,0xC0,0x4F,0x79,0xDB,0xC0);
|
||||
|
||||
|
||||
MIDL_DEFINE_GUID(IID, IID_ISCPSecureExchange2,0x6C62FC7B,0x2690,0x483F,0x9D,0x44,0x0A,0x20,0xCB,0x35,0x57,0x7C);
|
||||
|
||||
|
||||
MIDL_DEFINE_GUID(IID, IID_ISCPSecureExchange3,0xab4e77e4,0x8908,0x4b17,0xbd,0x2a,0xb1,0xdb,0xe6,0xdd,0x69,0xe1);
|
||||
|
||||
|
||||
MIDL_DEFINE_GUID(IID, IID_ISCPSession,0x88a3e6ed,0xeee4,0x4619,0xbb,0xb3,0xfd,0x4f,0xb6,0x27,0x15,0xd1);
|
||||
|
||||
|
||||
MIDL_DEFINE_GUID(IID, IID_ISCPSecureQuery3,0xB7EDD1A2,0x4DAB,0x484b,0xB3,0xC5,0xAD,0x39,0xB8,0xB4,0xC0,0xB1);
|
||||
|
||||
|
||||
MIDL_DEFINE_GUID(IID, IID_IComponentAuthenticate,0xA9889C00,0x6D2B,0x11d3,0x84,0x96,0x00,0xC0,0x4F,0x79,0xDB,0xC0);
|
||||
|
||||
|
||||
MIDL_DEFINE_GUID(IID, LIBID_MSWMDMLib,0x6EC6C744,0x355F,0x11D3,0x84,0x70,0x00,0xC0,0x4F,0x79,0xDB,0xC0);
|
||||
|
||||
|
||||
MIDL_DEFINE_GUID(CLSID, CLSID_MediaDevMgrClassFactory,0x50040C1D,0xBDBF,0x4924,0xB8,0x73,0xF1,0x4D,0x6C,0x5B,0xFD,0x66);
|
||||
|
||||
|
||||
MIDL_DEFINE_GUID(CLSID, CLSID_MediaDevMgr,0x25BAAD81,0x3560,0x11D3,0x84,0x71,0x00,0xC0,0x4F,0x79,0xDB,0xC0);
|
||||
|
||||
|
||||
MIDL_DEFINE_GUID(CLSID, CLSID_WMDMDevice,0x807B3CDF,0x357A,0x11d3,0x84,0x71,0x00,0xC0,0x4F,0x79,0xDB,0xC0);
|
||||
|
||||
|
||||
MIDL_DEFINE_GUID(CLSID, CLSID_WMDMStorage,0x807B3CE0,0x357A,0x11d3,0x84,0x71,0x00,0xC0,0x4F,0x79,0xDB,0xC0);
|
||||
|
||||
|
||||
MIDL_DEFINE_GUID(CLSID, CLSID_WMDMStorageGlobal,0x807B3CE1,0x357A,0x11d3,0x84,0x71,0x00,0xC0,0x4F,0x79,0xDB,0xC0);
|
||||
|
||||
|
||||
MIDL_DEFINE_GUID(CLSID, CLSID_WMDMDeviceEnum,0x430E35AF,0x3971,0x11D3,0x84,0x74,0x00,0xC0,0x4F,0x79,0xDB,0xC0);
|
||||
|
||||
|
||||
MIDL_DEFINE_GUID(CLSID, CLSID_WMDMStorageEnum,0xEB401A3B,0x3AF7,0x11d3,0x84,0x74,0x00,0xC0,0x4F,0x79,0xDB,0xC0);
|
||||
|
||||
#undef MIDL_DEFINE_GUID
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
|
91
Src/Plugins/Portable/pmp_p4s/pmp_p4s.rc
Normal file
91
Src/Plugins/Portable/pmp_p4s/pmp_p4s.rc
Normal file
@ -0,0 +1,91 @@
|
||||
// Microsoft Visual C++ generated resource script.
|
||||
//
|
||||
#include "resource1.h"
|
||||
|
||||
#define APSTUDIO_READONLY_SYMBOLS
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Generated from the TEXTINCLUDE 2 resource.
|
||||
//
|
||||
#include "afxres.h"
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
#undef APSTUDIO_READONLY_SYMBOLS
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// English (U.S.) resources
|
||||
|
||||
#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)
|
||||
#ifdef _WIN32
|
||||
LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
|
||||
#pragma code_page(1252)
|
||||
#endif //_WIN32
|
||||
|
||||
#ifdef APSTUDIO_INVOKED
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// TEXTINCLUDE
|
||||
//
|
||||
|
||||
1 TEXTINCLUDE
|
||||
BEGIN
|
||||
"resource1.h\0"
|
||||
END
|
||||
|
||||
2 TEXTINCLUDE
|
||||
BEGIN
|
||||
"#include ""afxres.h""\r\n"
|
||||
"\0"
|
||||
END
|
||||
|
||||
3 TEXTINCLUDE
|
||||
BEGIN
|
||||
"#include ""version.rc2""\r\n"
|
||||
"\0"
|
||||
END
|
||||
|
||||
#endif // APSTUDIO_INVOKED
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// String Table
|
||||
//
|
||||
|
||||
STRINGTABLE
|
||||
BEGIN
|
||||
IDS_NULLSOFT_P4S_PLUGIN "Nullsoft PlaysForSure Plug-in v%s"
|
||||
65535 "{01C3E74C-261E-45e2-AA30-ED4039DCD3A2}"
|
||||
END
|
||||
|
||||
STRINGTABLE
|
||||
BEGIN
|
||||
IDS_TRANSFERRING_PERCENT "Transferring %d%%"
|
||||
IDS_LOADING "Loading %s..."
|
||||
IDS_COUND_NOT_CREATE_FOLDER "Error: Could not create folder on device"
|
||||
IDS_COULD_NOT_CREATE_METADATA "Error: Could not create metadata: %x"
|
||||
IDS_INCOMPATABLE_DEVICE "Incompatable device"
|
||||
IDS_ERROR_IN_INSERT "Error in Insert: %x"
|
||||
IDS_UNSPECIFIED_ERROR "Unspecified Error"
|
||||
IDS_WAITING_FOR_OTHER_TRANSFERS "Waiting for other transfers to finish..."
|
||||
IDS_TRANSFERRING "Transferring..."
|
||||
IDS_DONE "Done"
|
||||
IDS_WAITING "Waiting..."
|
||||
IDS_FAILED "Failed"
|
||||
END
|
||||
|
||||
#endif // English (U.S.) resources
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
|
||||
|
||||
#ifndef APSTUDIO_INVOKED
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Generated from the TEXTINCLUDE 3 resource.
|
||||
//
|
||||
#include "version.rc2"
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
#endif // not APSTUDIO_INVOKED
|
||||
|
434
Src/Plugins/Portable/pmp_p4s/pmp_p4s.vcxproj
Normal file
434
Src/Plugins/Portable/pmp_p4s/pmp_p4s.vcxproj
Normal file
@ -0,0 +1,434 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project DefaultTargets="Build" ToolsVersion="Current" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ItemGroup Label="ProjectConfigurations">
|
||||
<ProjectConfiguration Include="Debug|Win32">
|
||||
<Configuration>Debug</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Debug|x64">
|
||||
<Configuration>Debug</Configuration>
|
||||
<Platform>x64</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Release|Win32">
|
||||
<Configuration>Release</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Release|x64">
|
||||
<Configuration>Release</Configuration>
|
||||
<Platform>x64</Platform>
|
||||
</ProjectConfiguration>
|
||||
</ItemGroup>
|
||||
<PropertyGroup Label="Globals">
|
||||
<VCProjectVersion>17.0</VCProjectVersion>
|
||||
<ProjectGuid>{2EAD12FA-51FE-4AB6-A0C8-3952209AA81F}</ProjectGuid>
|
||||
<RootNamespace>pmp_p4s</RootNamespace>
|
||||
<WindowsTargetPlatformVersion>10.0.19041.0</WindowsTargetPlatformVersion>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
|
||||
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
||||
<PlatformToolset>v142</PlatformToolset>
|
||||
<UseOfMfc>false</UseOfMfc>
|
||||
<UseOfAtl>false</UseOfAtl>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
|
||||
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
||||
<PlatformToolset>v142</PlatformToolset>
|
||||
<UseOfMfc>false</UseOfMfc>
|
||||
<UseOfAtl>false</UseOfAtl>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
|
||||
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
||||
<PlatformToolset>v142</PlatformToolset>
|
||||
<UseOfMfc>false</UseOfMfc>
|
||||
<UseOfAtl>false</UseOfAtl>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
|
||||
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
||||
<PlatformToolset>v142</PlatformToolset>
|
||||
<UseOfMfc>false</UseOfMfc>
|
||||
<UseOfAtl>false</UseOfAtl>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
||||
<ImportGroup Label="ExtensionSettings">
|
||||
</ImportGroup>
|
||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
<Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
<Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
<Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
<Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
|
||||
</ImportGroup>
|
||||
<PropertyGroup Label="UserMacros" />
|
||||
<PropertyGroup>
|
||||
<_ProjectFileVersion>17.0.32505.173</_ProjectFileVersion>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<OutDir>$(PlatformShortName)_$(Configuration)\</OutDir>
|
||||
<IntDir>$(PlatformShortName)_$(Configuration)\</IntDir>
|
||||
<LinkIncremental>false</LinkIncremental>
|
||||
<IncludePath>$(IncludePath)</IncludePath>
|
||||
<LibraryPath>$(LibraryPath)</LibraryPath>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||
<LinkIncremental>false</LinkIncremental>
|
||||
<IncludePath>$(IncludePath)</IncludePath>
|
||||
<LibraryPath>$(LibraryPath)</LibraryPath>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
<OutDir>$(PlatformShortName)_$(Configuration)\</OutDir>
|
||||
<IntDir>$(PlatformShortName)_$(Configuration)\</IntDir>
|
||||
<LinkIncremental>false</LinkIncremental>
|
||||
<GenerateManifest>false</GenerateManifest>
|
||||
<IncludePath>$(IncludePath)</IncludePath>
|
||||
<LibraryPath>$(LibraryPath)</LibraryPath>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||
<LinkIncremental>false</LinkIncremental>
|
||||
<GenerateManifest>false</GenerateManifest>
|
||||
<IncludePath>$(IncludePath)</IncludePath>
|
||||
<LibraryPath>$(LibraryPath)</LibraryPath>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Label="Vcpkg">
|
||||
<VcpkgEnableManifest>false</VcpkgEnableManifest>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Label="Vcpkg" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<VcpkgInstalledDir>
|
||||
</VcpkgInstalledDir>
|
||||
<VcpkgUseStatic>false</VcpkgUseStatic>
|
||||
<VcpkgConfiguration>Debug</VcpkgConfiguration>
|
||||
<VcpkgTriplet>x86-windows-static-md</VcpkgTriplet>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Vcpkg">
|
||||
<VcpkgInstalledDir>
|
||||
</VcpkgInstalledDir>
|
||||
<VcpkgUseStatic>false</VcpkgUseStatic>
|
||||
<VcpkgTriplet>x86-windows-static-md</VcpkgTriplet>
|
||||
<VcpkgConfiguration>Debug</VcpkgConfiguration>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Label="Vcpkg" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
<VcpkgInstalledDir>
|
||||
</VcpkgInstalledDir>
|
||||
<VcpkgUseStatic>false</VcpkgUseStatic>
|
||||
<VcpkgTriplet>x86-windows-static-md</VcpkgTriplet>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Vcpkg">
|
||||
<VcpkgInstalledDir>
|
||||
</VcpkgInstalledDir>
|
||||
<VcpkgUseStatic>false</VcpkgUseStatic>
|
||||
<VcpkgTriplet>x86-windows-static-md</VcpkgTriplet>
|
||||
</PropertyGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<Midl>
|
||||
<PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<MkTypLibCompatible>false</MkTypLibCompatible>
|
||||
<SuppressStartupBanner>true</SuppressStartupBanner>
|
||||
<TargetEnvironment>Win32</TargetEnvironment>
|
||||
<TypeLibraryName>$(IntDir)$(TargetName).tlb</TypeLibraryName>
|
||||
<HeaderFileName />
|
||||
</Midl>
|
||||
<ClCompile>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<AdditionalIncludeDirectories>..\..\..\replicant;..\..\..\Wasabi;..\..\..\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_USRDLL;ML_ex_EXPORTS;UNICODE;_UNICODE;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<StringPooling>true</StringPooling>
|
||||
<MinimalRebuild>false</MinimalRebuild>
|
||||
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
|
||||
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
|
||||
<BufferSecurityCheck>true</BufferSecurityCheck>
|
||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||
<TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
|
||||
<ForceConformanceInForLoopScope>true</ForceConformanceInForLoopScope>
|
||||
<RuntimeTypeInfo>false</RuntimeTypeInfo>
|
||||
<PrecompiledHeader />
|
||||
<PrecompiledHeaderOutputFile>$(IntDir)$(TargetName).pch</PrecompiledHeaderOutputFile>
|
||||
<AssemblerListingLocation>$(IntDir)</AssemblerListingLocation>
|
||||
<ObjectFileName>$(IntDir)</ObjectFileName>
|
||||
<ProgramDataBaseFileName>$(IntDir)$(TargetName).pdb</ProgramDataBaseFileName>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<SuppressStartupBanner>true</SuppressStartupBanner>
|
||||
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
|
||||
<MultiProcessorCompilation>true</MultiProcessorCompilation>
|
||||
</ClCompile>
|
||||
<ResourceCompile>
|
||||
<PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<Culture>0x040c</Culture>
|
||||
</ResourceCompile>
|
||||
<Link>
|
||||
<AdditionalDependencies>sehupd.lib;mssachlp.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
|
||||
<SuppressStartupBanner>true</SuppressStartupBanner>
|
||||
<IgnoreAllDefaultLibraries>false</IgnoreAllDefaultLibraries>
|
||||
<DelayLoadDLLs>tataki.dll;%(DelayLoadDLLs)</DelayLoadDLLs>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<ProgramDatabaseFile>$(IntDir)$(TargetName).pdb</ProgramDatabaseFile>
|
||||
<GenerateMapFile>false</GenerateMapFile>
|
||||
<MapExports>false</MapExports>
|
||||
<BaseAddress>0x14C00000</BaseAddress>
|
||||
<RandomizedBaseAddress>false</RandomizedBaseAddress>
|
||||
<DataExecutionPrevention />
|
||||
<ImportLibrary>$(IntDir)$(TargetName).lib</ImportLibrary>
|
||||
<TargetMachine>MachineX86</TargetMachine>
|
||||
<ImageHasSafeExceptionHandlers>false</ImageHasSafeExceptionHandlers>
|
||||
<AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<MapFileName>$(IntDir)$(TargetName).map</MapFileName>
|
||||
</Link>
|
||||
<PostBuildEvent>
|
||||
<Command>xcopy /Y /D $(OutDir)$(TargetName)$(TargetExt) ..\..\..\..\Build\Winamp_$(PlatformShortName)_$(Configuration)\Plugins\
|
||||
xcopy /Y /D $(IntDir)$(TargetName).pdb ..\..\..\..\Build\Winamp_$(PlatformShortName)_$(Configuration)\Plugins\ </Command>
|
||||
<Message>Post build event: 'xcopy /Y /D $(OutDir)$(TargetName)$(TargetExt) ..\..\..\..\Build\Winamp_$(PlatformShortName)_$(Configuration)\Plugins\'</Message>
|
||||
</PostBuildEvent>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||
<Midl>
|
||||
<PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<MkTypLibCompatible>false</MkTypLibCompatible>
|
||||
<SuppressStartupBanner>true</SuppressStartupBanner>
|
||||
<TypeLibraryName>$(IntDir)$(TargetName).tlb</TypeLibraryName>
|
||||
<HeaderFileName>
|
||||
</HeaderFileName>
|
||||
</Midl>
|
||||
<ClCompile>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<AdditionalIncludeDirectories>..\..\..\replicant;..\..\..\Wasabi;..\..\..\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_USRDLL;ML_ex_EXPORTS;UNICODE;_UNICODE;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<StringPooling>true</StringPooling>
|
||||
<MinimalRebuild>false</MinimalRebuild>
|
||||
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
|
||||
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
|
||||
<BufferSecurityCheck>true</BufferSecurityCheck>
|
||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||
<TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
|
||||
<ForceConformanceInForLoopScope>true</ForceConformanceInForLoopScope>
|
||||
<RuntimeTypeInfo>false</RuntimeTypeInfo>
|
||||
<PrecompiledHeader>
|
||||
</PrecompiledHeader>
|
||||
<PrecompiledHeaderOutputFile>$(IntDir)$(TargetName).pch</PrecompiledHeaderOutputFile>
|
||||
<AssemblerListingLocation>$(IntDir)</AssemblerListingLocation>
|
||||
<ObjectFileName>$(IntDir)</ObjectFileName>
|
||||
<ProgramDataBaseFileName>$(IntDir)$(TargetName).pdb</ProgramDataBaseFileName>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<SuppressStartupBanner>true</SuppressStartupBanner>
|
||||
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
|
||||
<MultiProcessorCompilation>true</MultiProcessorCompilation>
|
||||
</ClCompile>
|
||||
<ResourceCompile>
|
||||
<PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<Culture>0x040c</Culture>
|
||||
</ResourceCompile>
|
||||
<Link>
|
||||
<AdditionalDependencies>sehupd.lib;mssachlp.lib;fmtd.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
|
||||
<SuppressStartupBanner>true</SuppressStartupBanner>
|
||||
<IgnoreAllDefaultLibraries>false</IgnoreAllDefaultLibraries>
|
||||
<DelayLoadDLLs>tataki.dll;%(DelayLoadDLLs)</DelayLoadDLLs>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<ProgramDatabaseFile>$(IntDir)$(TargetName).pdb</ProgramDatabaseFile>
|
||||
<GenerateMapFile>false</GenerateMapFile>
|
||||
<MapExports>false</MapExports>
|
||||
<BaseAddress>0x14C00000</BaseAddress>
|
||||
<RandomizedBaseAddress>false</RandomizedBaseAddress>
|
||||
<DataExecutionPrevention>
|
||||
</DataExecutionPrevention>
|
||||
<ImportLibrary>$(IntDir)$(TargetName).lib</ImportLibrary>
|
||||
<ImageHasSafeExceptionHandlers>false</ImageHasSafeExceptionHandlers>
|
||||
<AdditionalLibraryDirectories>..\..\..\external_dependencies\vcpkg\buildtrees\fmt\$(PlatformShortName)-windows-dbg;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<MapFileName>$(IntDir)$(TargetName).map</MapFileName>
|
||||
</Link>
|
||||
<PostBuildEvent>
|
||||
<Command>xcopy /Y /D $(OutDir)$(TargetName)$(TargetExt) ..\..\..\..\Build\Winamp_$(PlatformShortName)_$(Configuration)\Plugins\
|
||||
xcopy /Y /D $(IntDir)$(TargetName).pdb ..\..\..\..\Build\Winamp_$(PlatformShortName)_$(Configuration)\Plugins\ </Command>
|
||||
<Message>Post build event: 'xcopy /Y /D $(OutDir)$(TargetName)$(TargetExt) ..\..\..\..\Build\Winamp_$(PlatformShortName)_$(Configuration)\Plugins\'</Message>
|
||||
</PostBuildEvent>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
<Midl>
|
||||
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<MkTypLibCompatible>true</MkTypLibCompatible>
|
||||
<SuppressStartupBanner>true</SuppressStartupBanner>
|
||||
<TargetEnvironment>Win32</TargetEnvironment>
|
||||
<TypeLibraryName>$(IntDir)$(TargetName).tlb</TypeLibraryName>
|
||||
<HeaderFileName />
|
||||
</Midl>
|
||||
<ClCompile>
|
||||
<Optimization>MinSpace</Optimization>
|
||||
<FavorSizeOrSpeed>Size</FavorSizeOrSpeed>
|
||||
<AdditionalIncludeDirectories>..\..\..\replicant;..\..\..\Wasabi;..\..\..\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_USRDLL;ML_ex_EXPORTS;UNICODE;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<StringPooling>true</StringPooling>
|
||||
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
|
||||
<BufferSecurityCheck>true</BufferSecurityCheck>
|
||||
<TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
|
||||
<ForceConformanceInForLoopScope>true</ForceConformanceInForLoopScope>
|
||||
<RuntimeTypeInfo>true</RuntimeTypeInfo>
|
||||
<PrecompiledHeader />
|
||||
<PrecompiledHeaderOutputFile>$(IntDir)$(TargetName).pch</PrecompiledHeaderOutputFile>
|
||||
<AssemblerListingLocation>$(IntDir)</AssemblerListingLocation>
|
||||
<ObjectFileName>$(IntDir)</ObjectFileName>
|
||||
<ProgramDataBaseFileName>$(IntDir)$(TargetName).pdb</ProgramDataBaseFileName>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<SuppressStartupBanner>true</SuppressStartupBanner>
|
||||
<DebugInformationFormat>None</DebugInformationFormat>
|
||||
<DisableSpecificWarnings>4996;%(DisableSpecificWarnings)</DisableSpecificWarnings>
|
||||
<MultiProcessorCompilation>true</MultiProcessorCompilation>
|
||||
</ClCompile>
|
||||
<ResourceCompile>
|
||||
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<Culture>0x040c</Culture>
|
||||
</ResourceCompile>
|
||||
<Link>
|
||||
<AdditionalDependencies>sehupd.lib;mssachlp.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
|
||||
<SuppressStartupBanner>true</SuppressStartupBanner>
|
||||
<IgnoreAllDefaultLibraries>false</IgnoreAllDefaultLibraries>
|
||||
<DelayLoadDLLs>tataki.dll;%(DelayLoadDLLs)</DelayLoadDLLs>
|
||||
<GenerateDebugInformation>false</GenerateDebugInformation>
|
||||
<ProgramDatabaseFile>$(IntDir)$(TargetName).pdb</ProgramDatabaseFile>
|
||||
<MapFileName>$(IntDir)$(TargetName).map</MapFileName>
|
||||
<OptimizeReferences>true</OptimizeReferences>
|
||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||
<RandomizedBaseAddress>false</RandomizedBaseAddress>
|
||||
<ImportLibrary>$(IntDir)$(TargetName).lib</ImportLibrary>
|
||||
<TargetMachine>MachineX86</TargetMachine>
|
||||
<ImageHasSafeExceptionHandlers>false</ImageHasSafeExceptionHandlers>
|
||||
<AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
</Link>
|
||||
<PostBuildEvent>
|
||||
<Command>xcopy /Y /D $(OutDir)$(TargetName)$(TargetExt) ..\..\..\..\Build\Winamp_$(PlatformShortName)_$(Configuration)\Plugins\ </Command>
|
||||
<Message>Post build event: 'xcopy /Y /D $(OutDir)$(TargetName)$(TargetExt) ..\..\..\..\Build\Winamp_$(PlatformShortName)_$(Configuration)\Plugins\'</Message>
|
||||
</PostBuildEvent>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||
<Midl>
|
||||
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<MkTypLibCompatible>true</MkTypLibCompatible>
|
||||
<SuppressStartupBanner>true</SuppressStartupBanner>
|
||||
<TypeLibraryName>$(IntDir)$(TargetName).tlb</TypeLibraryName>
|
||||
<HeaderFileName>
|
||||
</HeaderFileName>
|
||||
</Midl>
|
||||
<ClCompile>
|
||||
<Optimization>MinSpace</Optimization>
|
||||
<FavorSizeOrSpeed>Size</FavorSizeOrSpeed>
|
||||
<AdditionalIncludeDirectories>..\..\..\replicant;..\..\..\Wasabi;..\..\..\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_USRDLL;ML_ex_EXPORTS;UNICODE;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<StringPooling>true</StringPooling>
|
||||
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
|
||||
<BufferSecurityCheck>true</BufferSecurityCheck>
|
||||
<TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
|
||||
<ForceConformanceInForLoopScope>true</ForceConformanceInForLoopScope>
|
||||
<RuntimeTypeInfo>true</RuntimeTypeInfo>
|
||||
<PrecompiledHeader>
|
||||
</PrecompiledHeader>
|
||||
<PrecompiledHeaderOutputFile>$(IntDir)$(TargetName).pch</PrecompiledHeaderOutputFile>
|
||||
<AssemblerListingLocation>$(IntDir)</AssemblerListingLocation>
|
||||
<ObjectFileName>$(IntDir)</ObjectFileName>
|
||||
<ProgramDataBaseFileName>$(IntDir)$(TargetName).pdb</ProgramDataBaseFileName>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<SuppressStartupBanner>true</SuppressStartupBanner>
|
||||
<DebugInformationFormat>None</DebugInformationFormat>
|
||||
<DisableSpecificWarnings>4996;%(DisableSpecificWarnings)</DisableSpecificWarnings>
|
||||
<MultiProcessorCompilation>true</MultiProcessorCompilation>
|
||||
</ClCompile>
|
||||
<ResourceCompile>
|
||||
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<Culture>0x040c</Culture>
|
||||
</ResourceCompile>
|
||||
<Link>
|
||||
<AdditionalDependencies>sehupd.lib;mssachlp.lib;fmt.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
|
||||
<SuppressStartupBanner>true</SuppressStartupBanner>
|
||||
<IgnoreAllDefaultLibraries>false</IgnoreAllDefaultLibraries>
|
||||
<DelayLoadDLLs>tataki.dll;%(DelayLoadDLLs)</DelayLoadDLLs>
|
||||
<GenerateDebugInformation>false</GenerateDebugInformation>
|
||||
<ProgramDatabaseFile>$(IntDir)$(TargetName).pdb</ProgramDatabaseFile>
|
||||
<MapFileName>$(IntDir)$(TargetName).map</MapFileName>
|
||||
<OptimizeReferences>true</OptimizeReferences>
|
||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||
<RandomizedBaseAddress>false</RandomizedBaseAddress>
|
||||
<ImportLibrary>$(IntDir)$(TargetName).lib</ImportLibrary>
|
||||
<ImageHasSafeExceptionHandlers>false</ImageHasSafeExceptionHandlers>
|
||||
<AdditionalLibraryDirectories>..\..\..\external_dependencies\vcpkg\buildtrees\fmt\$(PlatformShortName)-windows-rel;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
</Link>
|
||||
<PostBuildEvent>
|
||||
<Command>xcopy /Y /D $(OutDir)$(TargetName)$(TargetExt) ..\..\..\..\Build\Winamp_$(PlatformShortName)_$(Configuration)\Plugins\ </Command>
|
||||
<Message>Post build event: 'xcopy /Y /D $(OutDir)$(TargetName)$(TargetExt) ..\..\..\..\Build\Winamp_$(PlatformShortName)_$(Configuration)\Plugins\'</Message>
|
||||
</PostBuildEvent>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\..\..\tataki\tataki.vcxproj">
|
||||
<Project>{255b68b5-7ef8-45ef-a675-2d6b88147909}</Project>
|
||||
<CopyLocalSatelliteAssemblies>true</CopyLocalSatelliteAssemblies>
|
||||
<ReferenceOutputAssembly>true</ReferenceOutputAssembly>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="..\..\..\Wasabi\bfc\bfc.vcxproj">
|
||||
<Project>{d0ec862e-dddd-4f4f-934f-b75dc9062dc1}</Project>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="..\..\..\Wasabi\Wasabi.vcxproj">
|
||||
<Project>{3e0bfa8a-b86a-42e9-a33f-ec294f823f7f}</Project>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="..\..\..\WAT\WAT.vcxproj">
|
||||
<Project>{c5714908-a71f-4644-bd95-aad8ee7914da}</Project>
|
||||
</ProjectReference>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="..\..\General\gen_ml\itemlist.cpp" />
|
||||
<ClCompile Include="..\..\General\gen_ml\ml_lib.cpp" />
|
||||
<ClCompile Include="deviceprovider.cpp" />
|
||||
<ClCompile Include="key-sub-523.c" />
|
||||
<ClCompile Include="main.cpp">
|
||||
<Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
|
||||
<Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Disabled</Optimization>
|
||||
<PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;ML_ex_EXPORTS</PreprocessorDefinitions>
|
||||
<PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;ML_ex_EXPORTS</PreprocessorDefinitions>
|
||||
<BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">EnableFastChecks</BasicRuntimeChecks>
|
||||
<BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">EnableFastChecks</BasicRuntimeChecks>
|
||||
<Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>
|
||||
<Optimization Condition="'$(Configuration)|$(Platform)'=='Release|x64'">MaxSpeed</Optimization>
|
||||
<PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;ML_ex_EXPORTS</PreprocessorDefinitions>
|
||||
<PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;ML_ex_EXPORTS</PreprocessorDefinitions>
|
||||
</ClCompile>
|
||||
<ClCompile Include="MyProgress.cpp" />
|
||||
<ClCompile Include="P4SDevice.cpp" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<CustomBuild Include="mssachlp.lib" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClInclude Include="..\..\General\gen_ml\itemlist.h" />
|
||||
<ClInclude Include="..\..\General\gen_ml\ml.h" />
|
||||
<ClInclude Include="..\..\Library\ml_pmp\AutoChar.h" />
|
||||
<ClInclude Include="..\..\Library\ml_pmp\AutoWide.h" />
|
||||
<ClInclude Include="..\..\Library\ml_pmp\pmp.h" />
|
||||
<ClInclude Include="deviceprovider.h" />
|
||||
<ClInclude Include="mswmdm.h" />
|
||||
<ClInclude Include="MyProgress.h" />
|
||||
<ClInclude Include="P4SDevice.h" />
|
||||
<ClInclude Include="resource1.h" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Image Include="resources\creativeZenIcon.png" />
|
||||
<Image Include="resources\nokiaIcon.png" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ResourceCompile Include="pmp_p4s.rc" />
|
||||
</ItemGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
||||
<ImportGroup Label="ExtensionTargets">
|
||||
</ImportGroup>
|
||||
</Project>
|
93
Src/Plugins/Portable/pmp_p4s/pmp_p4s.vcxproj.filters
Normal file
93
Src/Plugins/Portable/pmp_p4s/pmp_p4s.vcxproj.filters
Normal file
@ -0,0 +1,93 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ItemGroup>
|
||||
<Filter Include="Source Files">
|
||||
<UniqueIdentifier>{26c4de59-6800-4e2e-ae56-f878113f2e65}</UniqueIdentifier>
|
||||
<Extensions>cpp;c;cxx;rc;def;r;odl;idl;hpj;bat</Extensions>
|
||||
</Filter>
|
||||
<Filter Include="Header Files">
|
||||
<UniqueIdentifier>{c6299fac-f519-4ddb-9e8d-125e8f8a9fd0}</UniqueIdentifier>
|
||||
<Extensions>h;hpp;hxx;hm;inl</Extensions>
|
||||
</Filter>
|
||||
<Filter Include="Resource Files">
|
||||
<UniqueIdentifier>{584fb53f-22c8-454e-b344-1b279c0f2448}</UniqueIdentifier>
|
||||
<Extensions>ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe</Extensions>
|
||||
</Filter>
|
||||
<Filter Include="Image Files">
|
||||
<UniqueIdentifier>{8d672363-3c3f-4b3c-abdf-fa0e9c29023d}</UniqueIdentifier>
|
||||
</Filter>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="deviceprovider.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="key-sub-523.c">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="main.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="MyProgress.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="P4SDevice.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\General\gen_ml\itemlist.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\General\gen_ml\ml_lib.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClInclude Include="deviceprovider.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="mswmdm.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="MyProgress.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="P4SDevice.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="resource1.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\General\gen_ml\itemlist.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\General\gen_ml\ml.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\Library\ml_pmp\AutoChar.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\Library\ml_pmp\AutoWide.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\Library\ml_pmp\pmp.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Image Include="resources\nokiaIcon.png">
|
||||
<Filter>Image Files</Filter>
|
||||
</Image>
|
||||
<Image Include="resources\creativeZenIcon.png">
|
||||
<Filter>Image Files</Filter>
|
||||
</Image>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ResourceCompile Include="pmp_p4s.rc">
|
||||
<Filter>Resource Files</Filter>
|
||||
</ResourceCompile>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<CustomBuild Include="mssachlp.lib">
|
||||
<Filter>Resource Files</Filter>
|
||||
</CustomBuild>
|
||||
</ItemGroup>
|
||||
</Project>
|
31
Src/Plugins/Portable/pmp_p4s/resource1.h
Normal file
31
Src/Plugins/Portable/pmp_p4s/resource1.h
Normal file
@ -0,0 +1,31 @@
|
||||
//{{NO_DEPENDENCIES}}
|
||||
// Microsoft Visual C++ generated include file.
|
||||
// Used by pmp_p4s1.rc
|
||||
//
|
||||
#define IDS_TRANSFERRING_PERCENT 1
|
||||
#define IDS_LOADING 2
|
||||
#define IDS_COUND_NOT_CREATE_FOLDER 3
|
||||
#define IDS_COULD_NOT_CREATE_METADATA 4
|
||||
#define IDS_INCOMPATIBLE_DEVICE 5
|
||||
#define IDS_INCOMPATABLE_DEVICE 5
|
||||
#define IDS_ERROR_IN_INSERT 6
|
||||
#define IDS_UNSPECIFIED_ERROR 7
|
||||
#define IDS_WAITING_FOR_OTHER_TRANSFERS 8
|
||||
#define IDS_TRANSFERRING 9
|
||||
#define IDS_DONE 10
|
||||
#define IDS_WAITING 11
|
||||
#define IDS_FAILED 12
|
||||
#define IDR_CREATIVE_ZEN_ICON 102
|
||||
#define IDR_NOKIA_ICON 103
|
||||
#define IDS_NULLSOFT_P4S_PLUGIN 65534
|
||||
|
||||
// Next default values for new objects
|
||||
//
|
||||
#ifdef APSTUDIO_INVOKED
|
||||
#ifndef APSTUDIO_READONLY_SYMBOLS
|
||||
#define _APS_NEXT_RESOURCE_VALUE 107
|
||||
#define _APS_NEXT_COMMAND_VALUE 40001
|
||||
#define _APS_NEXT_CONTROL_VALUE 1001
|
||||
#define _APS_NEXT_SYMED_VALUE 101
|
||||
#endif
|
||||
#endif
|
BIN
Src/Plugins/Portable/pmp_p4s/resources/creativeZenIcon.png
Normal file
BIN
Src/Plugins/Portable/pmp_p4s/resources/creativeZenIcon.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 238 B |
BIN
Src/Plugins/Portable/pmp_p4s/resources/nokiaIcon.png
Normal file
BIN
Src/Plugins/Portable/pmp_p4s/resources/nokiaIcon.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 226 B |
26
Src/Plugins/Portable/pmp_p4s/sac.h
Normal file
26
Src/Plugins/Portable/pmp_p4s/sac.h
Normal file
@ -0,0 +1,26 @@
|
||||
//
|
||||
// Microsoft Windows Media Technologies
|
||||
// Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
//
|
||||
|
||||
#ifndef __SAC_H__
|
||||
#define __SAC_H__
|
||||
|
||||
typedef DWORD HMAC;
|
||||
|
||||
#define RSA_KEY_LEN 64
|
||||
#define SAC_SESSION_KEYLEN 8
|
||||
|
||||
#define SAC_PROTOCOL_WMDM 1
|
||||
#define SAC_PROTOCOL_V1 2
|
||||
|
||||
#define SAC_CERT_X509 1
|
||||
#define SAC_CERT_V1 2
|
||||
|
||||
typedef struct __MACINFO
|
||||
{
|
||||
BOOL fUsed;
|
||||
BYTE abMacState[36];
|
||||
} MACINFO;
|
||||
|
||||
#endif //__SAC_H__
|
73
Src/Plugins/Portable/pmp_p4s/scclient.h
Normal file
73
Src/Plugins/Portable/pmp_p4s/scclient.h
Normal file
@ -0,0 +1,73 @@
|
||||
//
|
||||
// Microsoft Windows Media Technologies
|
||||
// Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
//
|
||||
|
||||
#ifndef _CSECURECHANNELCLIENT_H_2AD99356_6FD2_11d3_8497_00C04F79DBC0
|
||||
#define _CSECURECHANNELCLIENT_H_2AD99356_6FD2_11d3_8497_00C04F79DBC0
|
||||
|
||||
#include "wtypes.h"
|
||||
|
||||
#ifdef USE_X509
|
||||
#include "rsa.h"
|
||||
#endif
|
||||
|
||||
#ifdef USE_X509
|
||||
#include "x509cert.h"
|
||||
#endif
|
||||
|
||||
#include "sac.h"
|
||||
|
||||
class CSecureChannelClient
|
||||
{
|
||||
public:
|
||||
CSecureChannelClient();
|
||||
~CSecureChannelClient();
|
||||
HRESULT SetCertificate(DWORD dwFlags,
|
||||
BYTE *pbAppCert,
|
||||
DWORD dwCertLen,
|
||||
BYTE *pbAppPVK,
|
||||
DWORD dwPVKLen);
|
||||
void SetInterface(IComponentAuthenticate *pComponentAuth);
|
||||
HRESULT Authenticate(DWORD dwProtocolID);
|
||||
HRESULT EncryptParam(BYTE *pbData,
|
||||
DWORD dwDataLen);
|
||||
HRESULT DecryptParam(BYTE *pbData,
|
||||
DWORD dwDataLen);
|
||||
HRESULT MACInit(HMAC *phMAC);
|
||||
HRESULT MACUpdate(HMAC hMAC,
|
||||
BYTE *pbData,
|
||||
DWORD dwDataLen);
|
||||
HRESULT MACFinal(HMAC hMAC,
|
||||
BYTE abData[SAC_MAC_LEN]);
|
||||
HRESULT GetAppSec(DWORD *pdwLocalAppSec, DWORD *pdwRemoteAppSec);
|
||||
HRESULT SetSessionKey(BYTE *pbSPSessionKey);
|
||||
HRESULT GetSessionKey(BYTE *pbSPSessionKey);
|
||||
HRESULT GetRemoteAppCert(BYTE *pbAppCert, DWORD* pdwCertLen);
|
||||
BOOL fIsAuthenticated();
|
||||
private:
|
||||
BOOL m_fAuthenticated;
|
||||
BYTE *m_pbAppCert;
|
||||
DWORD m_dwCertLen;
|
||||
BYTE *m_pbRemoteCert;
|
||||
DWORD m_dwRemoteCertLen;
|
||||
BYTE *m_pbAppPVK;
|
||||
DWORD m_dwPVKLen;
|
||||
BYTE *m_pbSessionKey;
|
||||
DWORD m_dwSessionKeyLen;
|
||||
BOOL m_TableInit;
|
||||
unsigned long m_DesTable[32];
|
||||
IComponentAuthenticate *m_pAuth;
|
||||
DWORD m_dwCertFlags;
|
||||
#ifdef USE_X509
|
||||
CX509Cert m_CertObj;
|
||||
#endif
|
||||
MACINFO aMacInfo[20];
|
||||
BYTE m_abMacKey[64];
|
||||
BOOL m_fMacKeyInit;
|
||||
CRITICAL_SECTION m_CS;
|
||||
HRESULT Protocol1();
|
||||
HRESULT Protocol2();
|
||||
};
|
||||
|
||||
#endif // _CSECURECHANNELCLIENT_H_2AD99356-6FD2-11d3-8497-00C04F79DBC0
|
BIN
Src/Plugins/Portable/pmp_p4s/sehupd.lib
Normal file
BIN
Src/Plugins/Portable/pmp_p4s/sehupd.lib
Normal file
Binary file not shown.
39
Src/Plugins/Portable/pmp_p4s/version.rc2
Normal file
39
Src/Plugins/Portable/pmp_p4s/version.rc2
Normal file
@ -0,0 +1,39 @@
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Version
|
||||
//
|
||||
#include "../../../Winamp/buildType.h"
|
||||
VS_VERSION_INFO VERSIONINFO
|
||||
FILEVERSION 0,99,1,0
|
||||
PRODUCTVERSION WINAMP_PRODUCTVER
|
||||
FILEFLAGSMASK 0x17L
|
||||
#ifdef _DEBUG
|
||||
FILEFLAGS 0x1L
|
||||
#else
|
||||
FILEFLAGS 0x0L
|
||||
#endif
|
||||
FILEOS 0x4L
|
||||
FILETYPE 0x2L
|
||||
FILESUBTYPE 0x0L
|
||||
BEGIN
|
||||
BLOCK "StringFileInfo"
|
||||
BEGIN
|
||||
BLOCK "040904b0"
|
||||
BEGIN
|
||||
VALUE "CompanyName", "Winamp SA"
|
||||
VALUE "FileDescription", "Winamp Portable Device Plug-in"
|
||||
VALUE "FileVersion", "0,99,1,0"
|
||||
VALUE "InternalName", "Nullsoft PlaysForSure"
|
||||
VALUE "LegalCopyright", "Copyright <20> 2006-2023 Winamp SA"
|
||||
VALUE "LegalTrademarks", "Nullsoft and Winamp are trademarks of Winamp SA"
|
||||
VALUE "OriginalFilename", "pmp_p4s.dll"
|
||||
VALUE "ProductName", "Winamp"
|
||||
VALUE "ProductVersion", STR_WINAMP_PRODUCTVER
|
||||
END
|
||||
END
|
||||
BLOCK "VarFileInfo"
|
||||
BEGIN
|
||||
VALUE "Translation", 0x409, 1200
|
||||
END
|
||||
END
|
BIN
Src/Plugins/Portable/pmp_p4s/wmdm.chm
Normal file
BIN
Src/Plugins/Portable/pmp_p4s/wmdm.chm
Normal file
Binary file not shown.
Reference in New Issue
Block a user