コンピュータ等

[ リスト ]

アセンブラで WinUSB を記述する サンプルを記載しておく



/A は 私の構造化言語の中にアセンブラ記述したものをそのまま複写しておいた

私の言語のローカル変数に値を転送するための記述がある
確認のため や 判定のための 言語記述は除いた

アセンブラで制御を必要とするひとの 参考になれば イインダガ


SetupDiGetClassDevsA proto :DWORD,:DWORD,:DWORD,:DWORD
SetupDiEnumDeviceInterfaces proto :DWORD,:DWORD,:DWORD,:DWORD,:DWORD
SetupDiDestroyDeviceInfoList proto :DWORD
SetupDiEnumDeviceInfo proto :DWORD,:DWORD,:DWORD

SetupDiGetDeviceRegistryPropertyA proto :DWORD,:DWORD,:DWORD,:DWORD,:DWORD,:DWORD,:DWORD
SetupDiGetDeviceInterfaceDetailA proto :DWORD,:DWORD,:DWORD,:DWORD,:DWORD,:DWORD

WinUsb_Initialize proto :DWORD,:DWORD
WinUsb_WritePipe PROTO :DWORD,:DWORD,:DWORD,:DWORD,:DWORD,:DWORD
WinUsb_ReadPipe PROTO :DWORD,:DWORD,:DWORD,:DWORD,:DWORD,:DWORD
WinUsb_Free PROTO :DWORD

includelib \WinDDK\7600.16385.0\lib\wxp\i386\WinUsb.lib
includelib \WinDDK\7600.16385.0\lib\wxp\i386\setupapi.lib


/A USBHND HWND ?
/A GGID db 128 dup(?)
/A INTFIND DD ?
/A CBSIZ DD ?


/* 構造体宣言だす */

/A GUID STRUCT ;typedef struct _GUID {
/A Data1 DD ? ;DWORD;      // 00000000-
/A Data2 DW ? ;WORD;       // 0000-
/A Data3 DW ? ;WORD ;       // 0000-
/A Data4 DB 8 DUP(?) ;  BYTE Data4[8];    // C000-000000000046
/A  GUID ENDS ;

/A SP_DEVICE_INTERFACE_DATA STRUCT ;typedef struct _SP_DEVICE_INTERFACE_DATA {
/A cbSize    DWORD ? ;4
/A InterfaceClassGuid   GUID <> ;16
/A Flags   DWORD ? ;4
/A Reserved  DD ? ;4  ULONG_PTR; 32-> 4 ポインター
/A SP_DEVICE_INTERFACE_DATA ENDS ;} SP_DEVICE_INTERFACE_DATA, *PSP_DEVICE_INTERFACE_DATA;



/A SP_DEVINFO_DATA  struct 
/A   cbSize   DWORD ? ;4
/A   ClassGuid  GUID <> ;16
/A   DevInst  DWORD ? ;4    // DEVINST handle
/A   Reserved DD ? ;4 ULONG_PTR; 32B ->4 64B ->8 ポインター
/A  SP_DEVINFO_DATA ENDS ;, *PSP_DEVINFO_DATA;


/A SP_DEVICE_INTERFACE_DETAIL_DATA_A struct ; typedef struct _SP_DEVICE_INTERFACE_DETAIL_DATA_A {
/A  cbSize   DWORD ? ; cbSize;
/A  DevicePath DB ?  ;CHAR   DevicePath[ANYSIZE_ARRAY]; 1 ANYSIZE_ARRAY -> 1
/A  DevicePathD DB 255 DUP(?) ;実行後判定した計算後出てきた 54H
/A SP_DEVICE_INTERFACE_DETAIL_DATA_A ENDS ; } SP_DEVICE_INTERFACE_DETAIL_DATA_A, *PSP_DEVICE_INTERFACE_DETAIL_DATA_A;





/A SetupDiGetDeviceRegistryProperty struct ;(
/A DeviceInfoSet   DD ?; __in HDEVINFO ,あらゆる型へのポインター
/A DeviceInfoData DD ? ;   __in PSP_DEVINFO_DATA, 構造体のポインター
/A Property DD ? ;   __in DWORD ,
/A PropertyRegDataType DD ? ;    __out_opt PDWORD, DWORD型へのポインタ
/A PropertyBuffer DD ? ;   __out_bcount_opt(PropertyBufferSize) PBYTE, バイト型 ポインター
/A PropertyBufferSize DD ? ;   __in DWORD,
/A RequiredSize     DD ? ; __out_opt PDWORD DWORD型へのポインタ
/A SetupDiGetDeviceRegistryProperty ENDS



/A InterfaceClassGuid GUID <>
/A SOTST SPDINFDATA <>
/A ;InterfaceDataStructure SP_DEVICE_INTERFACE_DATA <>
/A DInterfaceDataStructure SP_DEVICE_INTERFACE_DATA <>
/A InterfaceDataStructure DD ? ;ポインター
/A DevInfoData SP_DEVINFO_DATA <>;
/A DetailedInterfaceDataStructure SP_DEVICE_INTERFACE_DETAIL_DATA_A <> ;
/A ;CHKTEST DD 01234567H ;
/A PDetailedInterfaceDataStructure DD ? ;上記ポインター


/A PDevInfoData DD ? ;

/A DeviceInfoTable DD ? ;あらゆる型のポインターじゃと

/A InterfaceIndex       DD ? ;                DWORD  = 0;
/A StatusLastError      DD ? ;                  DWORD = 0;
/A dwRegType            DD ? ;            DWORD;
/A dwRegSize            DD ? ;            DWORD;
/A StructureSize        DD ? ;                DWORD = 0;
/A PropertyValueBuffer  DD ? ;                      PBYTE;バイト型ポインター
/A  MatchFound          DD ? ;             bool = false;
/A ErrorStatus          DD ? ;              DWORD;
/A BoolStatus           DD ? ;             BOOL = FALSE;  

/A MyDeviceHandle DD ? ;USB ファイルハンドル
/A MyWinUSBInterfaceHandle DD ? ;USBハンドル
/A DPropertyValueBuffer  DB 128 DUP(?) ;                    
/A BytesWritten DD ? ;
/A BytesRead DD ? ;
/A GTBFD DB 256 DUP(?)




/A MOV InterfaceClassGuid.Data1,58D07210H
/A MOV InterfaceClassGuid.Data2,027C1H
/A MOV InterfaceClassGuid.Data3,011DDH


/A MOV InterfaceClassGuid.Data4[0],0BDH
/A MOV InterfaceClassGuid.Data4[1],0BH
/A MOV InterfaceClassGuid.Data4[2],08H
/A MOV InterfaceClassGuid.Data4[3],00H
/A MOV InterfaceClassGuid.Data4[4],20H
/A MOV InterfaceClassGuid.Data4[5],0CH
/A MOV InterfaceClassGuid.Data4[6],09AH
/A MOV InterfaceClassGuid.Data4[7],066H

/A MOV EAX,OFFSET InterfaceClassGuid
/A MOV [EBP+4],EAX



[PR]お得情報

CMで話題のふるさと納税サイトさとふる
毎日お礼品ランキング更新中!
2019年のふるさと納税は≪12/31まで≫

その他のキャンペーン


プライバシー -  利用規約 -  メディアステートメント -  ガイドライン -  順守事項 -  ご意見・ご要望 -  ヘルプ・お問い合わせ

Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved.

みんなの更新記事