#define IID_IGPIO 0x00000003 /* GPIO interface */
typedef struct tagIGPIOVtbl
{
ULONG (*Write)(IGPIO *This, ULONG GPIO, ULONG Value);
ULONG (*Read)(IGPIO *This, ULONG GPIO);
} IGPIOVtbl; typedef struct tagIGPIO
{
struct tagIGPIOVtbl *lpVtbl;
} IGPIO; #define GPIO0 0
#define GPIO1 1
#define GPIO2 2
#define GPIO3 3
#define GPIO4 4
#define GPIO5 5
#define GPIO6 6
#define GPIO7 7
/* write a gpio hi or low */
#define IGPIO_Write(This, gpio, v)(This)->lpVtbl->Write(This, gpio, v)
/* read a gpio value */
#define IGPIO_Read(This, gpio)(This)->lpVtbl->Read(This, gpio)
IGPIO *pIGpio = 0;
// call this AFTER MPEGDriverEntry
DWORD dw = FMPQueryInterface (IID_IGPIO, (void **)pIGpio);
ASSERT (pIGpio);
if (pIGpio)
IGPIO_Write (pIGpio, GPIO7, 0); // pulls GPIO7 low1 pulls it high)
typedef struct tagIGPIOVtbl
{
ULONG (*Write)(IGPIO *This, ULONG GPIO, ULONG Value);
ULONG (*Read)(IGPIO *This, ULONG GPIO);
} IGPIOVtbl; typedef struct tagIGPIO
{
struct tagIGPIOVtbl *lpVtbl;
} IGPIO; #define GPIO0 0
#define GPIO1 1
#define GPIO2 2
#define GPIO3 3
#define GPIO4 4
#define GPIO5 5
#define GPIO6 6
#define GPIO7 7
/* write a gpio hi or low */
#define IGPIO_Write(This, gpio, v)(This)->lpVtbl->Write(This, gpio, v)
/* read a gpio value */
#define IGPIO_Read(This, gpio)(This)->lpVtbl->Read(This, gpio)
IGPIO *pIGpio = 0;
// call this AFTER MPEGDriverEntry
DWORD dw = FMPQueryInterface (IID_IGPIO, (void **)pIGpio);
ASSERT (pIGpio);
if (pIGpio)
IGPIO_Write (pIGpio, GPIO7, 0); // pulls GPIO7 low1 pulls it high)
加在一个vc程序内部,编译成一个exe文件不就完了嘛