本帖最后由 tony0121 于 2011-03-08 21:35:09 编辑

解决方案 »

  1.   

    在结构体的最后部分SENSE4_CONTEXT,*PSENSE4_CONTEXT;
    是结构体的实例化对象,在下面部分中pctx = (SENSE4_CONTEXT*) new BYTE[size];
    中调用了 结构体的实例化的对象,从而可以调来结构体中的内容
      

  2.   

       SENSE4_CONTEXT *    pctx    =    0;
    这个是什么意思,pctx的定义为0?
      

  3.   

    typedef struct {
            DWORD                   dwIndex;                                        /** device index; index begins at zero*/
            DWORD                   dwVersion;                                      /** device version*/ 
            S4HANDLE                hLock;                                          /** device handle*/
            BYTE                    reserve[12];                                    /** reserved*/
            BYTE                    bAtr[MAX_ATR_LEN];                              /** ATR*/
            BYTE                    bID[MAX_ID_LEN];                                /** device ID*/
            DWORD                   dwAtrLen;                                       /** ATR length*/
    }SENSE4_CONTEXT,*PSENSE4_CONTEXT;
    相当于:
    struct MyStr {
            DWORD                   dwIndex;                                        /** device index; index begins at zero*/
            DWORD                   dwVersion;                                      /** device version*/ 
            S4HANDLE                hLock;                                          /** device handle*/
            BYTE                    reserve[12];                                    /** reserved*/
            BYTE                    bAtr[MAX_ATR_LEN];                              /** ATR*/
            BYTE                    bID[MAX_ID_LEN];                                /** device ID*/
            DWORD                   dwAtrLen;                                       /** ATR length*/
    };
    MyStr SENSE4_CONTEXT,*PSENSE4_CONTEXT;SENSE4_CONTEXT *    pctx    =    0;
    在c里,表示定义了一个指针变量pctx,指向一个变量在内存里的地址,=0,就是不指向任何变量,只是申明下。你在C#里调用,就别管其细节,直接使用dll提供的“接口”使用即可