過去の投稿日別表示

[ リスト | 詳細 ]

全1ページ

[1]

文字制限にかかったので 後ろの部分



/A invoke SetupDiGetClassDevsA,ADDR InterfaceClassGuid,NULL,NULL,18 ;
/A ;invoke SetupDiGetClassDevsA,NULL,0,0,18; ;
/A MOV [EBP],EAX
/A MOV DeviceInfoTable,EAX

/A INVOKE GetLastError
/A MOV [EBP+8],EAX


/A MOV InterfaceIndex,0

/A MOV DInterfaceDataStructure.cbSize,28;サイズ
/A MOV EAX,OFFSET DInterfaceDataStructure ;データアドレスを転送する
/A MOV InterfaceDataStructure,EAX
/A MOV [EBP+4],EAX
/A INVOKE SetupDiEnumDeviceInterfaces, \
/A DeviceInfoTable,NULL,ADDR InterfaceClassGuid, \
/A InterfaceIndex,InterfaceDataStructure
/A MOV [EBP],EAX

/A INVOKE GetLastError
/A MOV [EBP+8],EAX


/A INVOKE GetLastError
/A MOV USBEST,EAX
/A MOV [EBP+8],EAX


/A INVOKE SetupDiDestroyDeviceInfoList,DeviceInfoTable
/A MOV [EBP],EAX

/A INVOKE GetLastError
/A MOV USBEST,EAX
/A MOV [EBP+8],EAX


/A INVOKE GetLastError
/A MOV ErrorStatus,EAX
/A MOV [EBP+8],EAX
/A INVOKE SetupDiDestroyDeviceInfoList,DeviceInfoTable   
/A MOV [EBP],EAX

/A INVOKE GetLastError
/A MOV USBEST,EAX
/A MOV [EBP+12],EAX


/A MOV  DevInfoData.cbSize,28
/A MOV EAX,OFFSET DevInfoData
/A MOV PDevInfoData,EAX
/A MOV InterfaceIndex,0

/A INVOKE SetupDiEnumDeviceInfo,DeviceInfoTable, \
/A InterfaceIndex, ADDR DevInfoData
/A MOV [EBP],EAX

/A INVOKE GetLastError
/A MOV [EBP+8],EAX


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


/A INVOKE SetupDiGetDeviceRegistryPropertyA,DeviceInfoTable, \
/A ADDR DevInfoData,1, \
/A ADDR dwRegType, NULL, 0, ADDR dwRegSize
/A MOV [EBP+8],EAX
/A MOV EAX,dwRegSize ;実行結果36が帰ってきた
/A MOV [EBP],EAX

/A INVOKE GetLastError
/A MOV [EBP+12],EAX ;7A 122  システム コールに渡されるデータ領域が小さすぎます。


/A MOV EAX,OFFSET DPropertyValueBuffer
/A MOV PropertyValueBuffer,EAX
/A INVOKE SetupDiGetDeviceRegistryPropertyA,DeviceInfoTable, \
/A ADDR DevInfoData, 1, ADDR dwRegType, \
/A PropertyValueBuffer, dwRegSize, NULL

/A MOV [EBP],EAX

/A INVOKE GetLastError
/A MOV [EBP+8],EAX

/A MOV EAX,StructureSize
/A MOV [EBP],EAX


TRSWT(0H,' StructureSize= ',0) TRSWT(1,WKL,1)


/A MOV DetailedInterfaceDataStructure.cbSize,5
/A ;MOV StructureSize,8 ;????XX
/A INVOKE SetupDiGetDeviceInterfaceDetailA,DeviceInfoTable, \
/A InterfaceDataStructure, NULL, NULL,ADDR StructureSize, NULL   
/A MOV [EBP],EAX
/A INVOKE GetLastError
/A MOV [EBP+8],EAX ;7AH 122 システム コールに渡されるデータ領域が小さすぎます

/A MOV EAX,StructureSize ;54H で戻っている
/A MOV [EBP+12],EAX
/* 0000  007A  0054 */
TRSWT(0H,' h ',0) TRSWT(1,WKL,1)  TRSWT(1,WKL1,1)  TRSWT(1,WKL2,1)

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


/A MOV EAX,OFFSET DetailedInterfaceDataStructure
/A MOV PDetailedInterfaceDataStructure,EAX
/A MOV [EBP+4],EAX

/A MOV DetailedInterfaceDataStructure.cbSize,5 ;54H ;54H ;? 58?

/A INVOKE SetupDiGetDeviceInterfaceDetailA,DeviceInfoTable, \
/A  InterfaceDataStructure, PDetailedInterfaceDataStructure, \
/A  StructureSize, 0,0 

/A MOV [EBP],EAX
/A INVOKE GetLastError
/A MOV [EBP+8],EAX ;6F8 1784 要求された操作に対して与えられたバッファが無効です。
/A MOV EAX,StructureSize
/A MOV [EBP+12],EAX


/A INVOKE CreateFile,ADDR DetailedInterfaceDataStructure.DevicePath,\
/A 0C0000000H,3,NULL,3,40000000H,0

/A MOV MyDeviceHandle,EAX
/A MOV [EBP],EAX

/A INVOKE GetLastError
/A MOV [EBP+8],EAX ;7BH 123 ファイル名、ディレクトリ名、またはボリューム ラベルの構文が間違っています。


/A INVOKE WinUsb_Initialize,MyDeviceHandle, \
/A ADDR MyWinUSBInterfaceHandle ;
/A MOV BoolStatus,EAX
/A MOV [EBP],EAX


/A INVOKE WinUsb_Free,MyWinUSBInterfaceHandle
/A invoke CloseHandle,MyDeviceHandle


/* ================================================== */


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

MOVE 80H TO *P

/A INVOKE WinUsb_WritePipe,MyWinUSBInterfaceHandle, \
/A 01, ADDR GTBFD, 64, ADDR BytesWritten, NULL ;  

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

MOVE 81H TO *P

/A INVOKE WinUsb_WritePipe,MyWinUSBInterfaceHandle, \
/A 01, ADDR GTBFD, 64, ADDR BytesWritten, NULL ;  
/A INVOKE WinUsb_ReadPipe,MyWinUSBInterfaceHandle, \
/A 81H,ADDR GTBFD, 64, ADDR BytesRead, NULL ;  

アセンブラで 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


全1ページ

[1]


[PR]お得情報

ふるさと納税サイト≪さとふる≫
実質2000円で好きなお礼品を選べる
毎日人気ランキング更新中!

その他のキャンペーン


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

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

みんなの更新記事