mirror of
https://gitea.tendokyu.moe/TeamTofuShop/taitools.git
synced 2026-09-22 22:28:06 +03:00
gc boots to title (no io)
This commit is contained in:
+1
-1
@@ -36,7 +36,7 @@ $(BUILD_DIR_ZIP)/gc.zip:
|
||||
$(DIST_DIR)/gc/taitools.ini \
|
||||
$(DIST_DIR)/gc/start.bat \
|
||||
$(BUILD_DIR_ZIP)/gc
|
||||
$(V)cp pki/client.p12 \
|
||||
$(V)cp pki/client_gc.p12 \
|
||||
$(BUILD_DIR_ZIP)/gc
|
||||
$(V)strip $(BUILD_DIR_ZIP)/gc/*.{exe,dll}
|
||||
$(V)cd $(BUILD_DIR_ZIP)/gc ; zip -r ../gc.zip *
|
||||
|
||||
+8
-7
@@ -18,7 +18,7 @@
|
||||
|
||||
// JVS card reader, A/B/C vairants
|
||||
|
||||
static const uint8_t dongle_ident[] = "TAITO CORP.;RFID CTRL P.C.B.;Ver1.11;";
|
||||
static const uint8_t dongle_ident[] = "TAITO CORP.;SECURITY PCB;Ver1.00;";
|
||||
static const uint8_t card_uid[] = { 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x00 };
|
||||
static const uint8_t card_id[] = {
|
||||
0x01, 0x2E, 0x4C, 0xE4, 0x00, 0x01, 0x00, 0x01,
|
||||
@@ -80,8 +80,8 @@ void dongle_init(
|
||||
dongle->jvs.next = next;
|
||||
dongle->jvs.transact = dongle_transact;
|
||||
dongle->jvs.sense = dongle_sense;
|
||||
dongle->jvs.sense_out = false;
|
||||
dongle->addr = 0x80;
|
||||
dongle->jvs.sense_out = true;
|
||||
dongle->addr = 0xFF;
|
||||
dongle->state = IDLE;
|
||||
dongle->ops_ctx = ops_ctx;
|
||||
}
|
||||
@@ -118,7 +118,7 @@ static bool dongle_sense(struct jvs_node *node)
|
||||
|
||||
dongle = CONTAINING_RECORD(node, struct dongle, jvs);
|
||||
|
||||
return dongle->addr == 0xFF;
|
||||
return dongle->jvs.sense_out;
|
||||
}
|
||||
|
||||
static HRESULT dongle_cmd(
|
||||
@@ -190,7 +190,7 @@ static HRESULT dongle_cmd_reset(struct dongle *dongle, struct const_iobuf *req_b
|
||||
|
||||
dprintf("Dongle: Reset (param %02x)\n", req.unknown);
|
||||
dongle->addr = 0xFF;
|
||||
dongle->jvs.sense_out = false;
|
||||
dongle->jvs.sense_out = true;
|
||||
|
||||
/* No ack for this since it really is addressed to everybody */
|
||||
|
||||
@@ -213,15 +213,16 @@ static HRESULT dongle_cmd_assign_addr(
|
||||
}
|
||||
|
||||
sense = jvs_node_sense(dongle->jvs.next);
|
||||
dprintf("Dongle: Assign addr %02x sense %i\n", req.addr, sense);
|
||||
|
||||
if (sense) {
|
||||
/* That address is for somebody else */
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
dprintf("Dongle: Assign addr %02x sense %i\n", req.addr, sense);
|
||||
|
||||
dongle->addr = req.addr;
|
||||
dongle->jvs.sense_out = true;
|
||||
dongle->jvs.sense_out = false;
|
||||
|
||||
return iobuf_write_8(resp_buf, 0x01);
|
||||
}
|
||||
|
||||
+5
-4
@@ -118,7 +118,7 @@ static bool k92x0249_sense(struct jvs_node *node)
|
||||
|
||||
k92x0249 = CONTAINING_RECORD(node, struct k92x0249, jvs);
|
||||
|
||||
return k92x0249->addr == 0xFF;
|
||||
return k92x0249->jvs.sense_out;
|
||||
}
|
||||
|
||||
static HRESULT k92x0249_cmd(
|
||||
@@ -190,7 +190,7 @@ static HRESULT k92x0249_cmd_reset(struct k92x0249 *k92x0249, struct const_iobuf
|
||||
|
||||
dprintf("K92X0249: Reset (param %02x)\n", req.unknown);
|
||||
k92x0249->addr = 0xFF;
|
||||
k92x0249->jvs.sense_out = false;
|
||||
k92x0249->jvs.sense_out = true;
|
||||
|
||||
/* No ack for this since it really is addressed to everybody */
|
||||
|
||||
@@ -213,15 +213,16 @@ static HRESULT k92x0249_cmd_assign_addr(
|
||||
}
|
||||
|
||||
sense = jvs_node_sense(k92x0249->jvs.next);
|
||||
dprintf("K92X0249: Assign addr %02x sense %i\n", req.addr, sense);
|
||||
|
||||
if (sense) {
|
||||
/* That address is for somebody else */
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
dprintf("K92X0249: Assign addr %02x sense %i\n", req.addr, sense);
|
||||
|
||||
k92x0249->addr = req.addr;
|
||||
k92x0249->jvs.sense_out = true;
|
||||
k92x0249->jvs.sense_out = false;
|
||||
|
||||
return iobuf_write_8(resp_buf, 0x01);
|
||||
}
|
||||
|
||||
Vendored
+1
-1
@@ -8,7 +8,7 @@ enable=1
|
||||
default=localhost
|
||||
|
||||
[cert]
|
||||
path=client.p12
|
||||
path=client_gc.p12
|
||||
|
||||
[reader]
|
||||
card_serial=7020392000000000
|
||||
|
||||
+6
-3
@@ -22,9 +22,12 @@ HRESULT gc_reader_init(struct jvs_node **out)
|
||||
|
||||
dprintf("Gc Nesica Reader: Init\n");
|
||||
|
||||
dongle_init(&gc_dongle, NULL, NULL);
|
||||
k92x0249_init(&gc_jvs_reader, dongle_to_jvs_node(&gc_dongle), NULL);
|
||||
*out = k92x0249_to_jvs_node(&gc_jvs_reader);
|
||||
k92x0249_init(&gc_jvs_reader, NULL, NULL);
|
||||
//dongle_init(&gc_dongle, NULL, NULL);
|
||||
dongle_init(&gc_dongle, k92x0249_to_jvs_node(&gc_jvs_reader), NULL);
|
||||
//k92x0249_init(&gc_jvs_reader, dongle_to_jvs_node(&gc_dongle), NULL);
|
||||
//*out = k92x0249_to_jvs_node(&gc_jvs_reader);
|
||||
*out = dongle_to_jvs_node(&gc_dongle);
|
||||
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
+4
-6
@@ -70,7 +70,7 @@ static int WSAAPI hook_getaddrinfo(
|
||||
const ADDRINFOA *pHints,
|
||||
ADDRINFOA **ppResult);
|
||||
|
||||
static BOOL my_WinHttpCrackUrl(
|
||||
static BOOL WINAPI my_WinHttpCrackUrl(
|
||||
LPCWSTR pwszUrl,
|
||||
DWORD dwUrlLength,
|
||||
DWORD dwFlags,
|
||||
@@ -105,7 +105,7 @@ static int (WSAAPI *next_getaddrinfo)(
|
||||
const ADDRINFOA *pHints,
|
||||
ADDRINFOA **ppResult);
|
||||
|
||||
static BOOL (*next_WinHttpCrackUrl)(
|
||||
static BOOL (WINAPI *next_WinHttpCrackUrl)(
|
||||
LPCWSTR pwszUrl,
|
||||
DWORD dwUrlLength,
|
||||
DWORD dwFlags,
|
||||
@@ -542,7 +542,7 @@ bool match_domain(const wchar_t* target, const wchar_t* pattern) {
|
||||
return pattern[pattern_ptr_index] == '\0' && (proto[target_ptr_index] == '\0' || proto[target_ptr_index] == '/');
|
||||
}
|
||||
|
||||
static BOOL my_WinHttpCrackUrl(
|
||||
static BOOL WINAPI my_WinHttpCrackUrl(
|
||||
LPCWSTR pwszUrl,
|
||||
DWORD dwUrlLength,
|
||||
DWORD dwFlags,
|
||||
@@ -550,9 +550,8 @@ static BOOL my_WinHttpCrackUrl(
|
||||
{
|
||||
const struct dns_hook_entry *pos;
|
||||
size_t i;
|
||||
|
||||
EnterCriticalSection(&dns_hook_lock);
|
||||
|
||||
//WinHttpCrackUrl()
|
||||
for (i = 0 ; i < dns_hook_nentries ; i++) {
|
||||
pos = &dns_hook_entries[i];
|
||||
|
||||
@@ -605,5 +604,4 @@ static BOOL my_WinHttpCrackUrl(
|
||||
dwFlags,
|
||||
lpUrlComponents
|
||||
);
|
||||
|
||||
}
|
||||
|
||||
+9
-4
@@ -113,7 +113,7 @@ static HRESULT jvs_handle_irp_locked(struct irp *irp)
|
||||
case IOCTL_SERIAL_GET_MODEMSTATUS:
|
||||
//jvs_uart.cts_on = jvs_root->sense_out;
|
||||
//dprintf("JVS: Set CTS to %X\n", jvs_root->sense_out);
|
||||
jvs_uart.cts_on = jvs_root->sense_out;
|
||||
jvs_uart.cts_on = !jvs_root->sense_out; // ??
|
||||
break;
|
||||
case IOCTL_SERIAL_GET_COMMSTATUS:
|
||||
//dprintf("JVS: Set cbInQue to %d\n", (int)tmp.pos);
|
||||
@@ -123,12 +123,18 @@ static HRESULT jvs_handle_irp_locked(struct irp *irp)
|
||||
}
|
||||
|
||||
if (irp->op == IRP_OP_READ) {
|
||||
if (irp->read.nbytes > 1) {
|
||||
if (irp->read.nbytes == 1) {
|
||||
iobuf_write_8(&irp->read, 1);
|
||||
return S_OK;
|
||||
}
|
||||
if (irp->read.nbytes >= tmp.pos) {
|
||||
//dprintf("JVS: Readable buffer is %d / %d\n", (int)irp->read.nbytes, (int)tmp.pos);
|
||||
iobuf_write(&irp->read, tmp.bytes, tmp.pos);
|
||||
tmp.pos = 0;
|
||||
} else {
|
||||
dprintf("JVS: Readable buffer is 1!\n");
|
||||
dprintf("JVS: READ need %d bytes but only have room for %d\n", tmp.pos, irp->read.nbytes);
|
||||
iobuf_write(&irp->read, tmp.bytes, irp->read.nbytes);
|
||||
tmp.pos -= irp->read.nbytes;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -138,7 +144,6 @@ static HRESULT jvs_handle_irp_locked(struct irp *irp)
|
||||
return hr;
|
||||
}
|
||||
|
||||
//jvs_bus_transact(jvs_root, irp->write.bytes, irp->write.nbytes, &irp->read);
|
||||
jvs_bus_transact(jvs_root, irp->write.bytes, irp->write.nbytes, &tmp);
|
||||
|
||||
jvs_uart.written.pos = 0;
|
||||
|
||||
@@ -20,7 +20,12 @@ openssl req -newkey rsa:2048 -nodes -keyout pki/client.key -out pki/client.csr -
|
||||
# Generate client cert
|
||||
openssl x509 -req -sha256 -days 3650 -in pki/client.csr -CA pki/nesys.cer -CAkey pki/nesys.key -out pki/client.cer -set_serial 0
|
||||
|
||||
# Package as a p12 file for Theatrhythm
|
||||
# Package as a p12 file
|
||||
openssl pkcs12 -export -out pki/client.p12 -inkey pki/client.key -in pki/client.cer
|
||||
|
||||
# Generate GC client certs
|
||||
openssl req -newkey rsa:2048 -nodes -keyout pki/client_gc.key -out pki/client_gc.csr -subj "/C=JP/ST=A/L=A/CN=PREMIUM"
|
||||
openssl x509 -req -sha256 -days 3650 -in pki/client_gc.csr -CA pki/ca.cer -CAkey pki/ca.key -out pki/client_gc.cer -set_serial 0
|
||||
openssl pkcs12 -export -out pki/client_gc.p12 -inkey pki/client_gc.key -in pki/client_gc.cer
|
||||
|
||||
rm pki/*.csr
|
||||
@@ -113,6 +113,7 @@ HRESULT jvs_frame_encode(
|
||||
checksum = 0;
|
||||
|
||||
if (dest->pos + 1 > dest->nbytes) {
|
||||
dprintf("JVS Frame: Require %d bytes but only have space for %d\n", dest->pos + 1, dest->nbytes);
|
||||
return HRESULT_FROM_WIN32(ERROR_INSUFFICIENT_BUFFER);
|
||||
}
|
||||
|
||||
|
||||
+6
-6
@@ -47,15 +47,15 @@ void jvs_crack_request(
|
||||
return;
|
||||
}
|
||||
|
||||
#if 0
|
||||
dprintf("Decoded request:\n");
|
||||
dump_iobuf(&decode);
|
||||
#endif
|
||||
|
||||
if (req_bytes[0] != jvs_addr && req_bytes[0] != 0xFF) {
|
||||
if (req_bytes[0] != jvs_addr && jvs_addr != 0xFF) {
|
||||
return;
|
||||
}
|
||||
|
||||
#if 0
|
||||
dprintf("Decoded request checked by %02X:\n", jvs_addr);
|
||||
dump_iobuf(&decode);
|
||||
#endif
|
||||
|
||||
iobuf_flip(&segments, &decode);
|
||||
|
||||
segments.pos = 2;
|
||||
|
||||
@@ -0,0 +1,20 @@
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIDOzCCAiOgAwIBAgIBADANBgkqhkiG9w0BAQsFADBHMQswCQYDVQQGEwJKUDEK
|
||||
MAgGA1UECAwBQTEKMAgGA1UEBwwBQTEgMB4GA1UEAwwXVGFpdG8gQXJjYWRlIE1h
|
||||
Y2hpbmUgQ0EwHhcNMjYwMzE0MDI0NjU5WhcNMzYwMzExMDI0NjU5WjA3MQswCQYD
|
||||
VQQGEwJKUDEKMAgGA1UECAwBQTEKMAgGA1UEBwwBQTEQMA4GA1UEAwwHUFJFTUlV
|
||||
TTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALQGviNLFLOLc2U5uRBC
|
||||
vVtxuF83UhkX81crmPJssr/9E/97P/XetAhYJklexKlGYvr/Y73hA4oVQKFFk2Vr
|
||||
ASjXYjF8MCGgyXh1ShZ6V43kDjs+sWxoAAzsEoG/PhMfrxQHmgTpRkV/MiHLIoAa
|
||||
4dhuYYrXRZpZjCiIiqC4lctDmbs0o0ubVPP0wp2Y47JCZd+FEwacnh1GN6ns3juv
|
||||
LX2UUPTD4rcm5LQ1GOPUCzLPWxe5qRsQkX2C2wA3ZNLdkViEZEmwgQktK/9FG6vP
|
||||
PfbmlS3gnQSm2SEBHhPE0y7DzS5mE3PhteWEHrOOpVkEZlzXkn7oZAnT2LiHL1Bw
|
||||
v2UCAwEAAaNCMEAwHQYDVR0OBBYEFKxkTfZiZnWpIQttx24gX+3KB04PMB8GA1Ud
|
||||
IwQYMBaAFMbnTayEU9K2mel1yhpgjhAZnIeMMA0GCSqGSIb3DQEBCwUAA4IBAQCe
|
||||
jwRFCcSYro6aaKSzNkArQhKyqJ7hYxkPWHFxEaS0lZFQVr2oxWY1WQa6C1fHEaFh
|
||||
g5MzD3kKCAvYdVb6Pi2nlLP5ZyO/Oy1d95zaI7uEosKyGNVAaFXN22O43CkrkX2P
|
||||
19YLTcI0uCREngMCSr+LPm/7L9JWECxSAMCG6OxqP6mmzFS2x3Mwl+tVQqLk8Xsr
|
||||
o3bEeXy3egvFBKcxwaMrtpaErunrqNAWMbY5U1pA4W19yUIr9XVEyPwgbApUrxfi
|
||||
Ze+51WI/QG7XQ4m+TB6JDyt18eZGcu4vSnJX3mxp4vvZujDixyUSmvkRik4EKVpK
|
||||
smkSLdTzGTArSH81Ojkl
|
||||
-----END CERTIFICATE-----
|
||||
@@ -0,0 +1,16 @@
|
||||
-----BEGIN CERTIFICATE REQUEST-----
|
||||
MIICfDCCAWQCAQAwNzELMAkGA1UEBhMCSlAxCjAIBgNVBAgMAUExCjAIBgNVBAcM
|
||||
AUExEDAOBgNVBAMMB1BSRU1JVU0wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEK
|
||||
AoIBAQC0Br4jSxSzi3NlObkQQr1bcbhfN1IZF/NXK5jybLK//RP/ez/13rQIWCZJ
|
||||
XsSpRmL6/2O94QOKFUChRZNlawEo12IxfDAhoMl4dUoWeleN5A47PrFsaAAM7BKB
|
||||
vz4TH68UB5oE6UZFfzIhyyKAGuHYbmGK10WaWYwoiIqguJXLQ5m7NKNLm1Tz9MKd
|
||||
mOOyQmXfhRMGnJ4dRjep7N47ry19lFD0w+K3JuS0NRjj1Asyz1sXuakbEJF9gtsA
|
||||
N2TS3ZFYhGRJsIEJLSv/RRurzz325pUt4J0EptkhAR4TxNMuw80uZhNz4bXlhB6z
|
||||
jqVZBGZc15J+6GQJ09i4hy9QcL9lAgMBAAGgADANBgkqhkiG9w0BAQsFAAOCAQEA
|
||||
gFeA40KfDp9nmEVNi6jL3QAnpMH7vsS+LkuqR9ZhhRX/GWyGxFdg5bLsEPs44X+z
|
||||
U2PbR5oXm8EvoxkwsjPdO4xHsGttQTzWWhDdsAYdktK0SYAjDE63ixt5ZkS3OtWU
|
||||
eqZgPr6aBEzvioM7OkSb74KI+0aUnAKa2ot2D1Whqvn6FN/cBUy8bZahsAe43QXj
|
||||
b5uLXdQUFHMr5ebe8n0036j8IArh3jSQyy08uwWeGC0Z87FNDeTZ6u6H9VUQzmHj
|
||||
sgjOe8y+V8bQX1rn5MOzhKr/bsmuoV+dGaA7L1w7yxqlKT2H3NnTi+SZhQsi9n66
|
||||
BnUDXxrsywiGd4GXWs5gJw==
|
||||
-----END CERTIFICATE REQUEST-----
|
||||
@@ -0,0 +1,28 @@
|
||||
-----BEGIN PRIVATE KEY-----
|
||||
MIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQC0Br4jSxSzi3Nl
|
||||
ObkQQr1bcbhfN1IZF/NXK5jybLK//RP/ez/13rQIWCZJXsSpRmL6/2O94QOKFUCh
|
||||
RZNlawEo12IxfDAhoMl4dUoWeleN5A47PrFsaAAM7BKBvz4TH68UB5oE6UZFfzIh
|
||||
yyKAGuHYbmGK10WaWYwoiIqguJXLQ5m7NKNLm1Tz9MKdmOOyQmXfhRMGnJ4dRjep
|
||||
7N47ry19lFD0w+K3JuS0NRjj1Asyz1sXuakbEJF9gtsAN2TS3ZFYhGRJsIEJLSv/
|
||||
RRurzz325pUt4J0EptkhAR4TxNMuw80uZhNz4bXlhB6zjqVZBGZc15J+6GQJ09i4
|
||||
hy9QcL9lAgMBAAECggEAANCuADlpDtYRD/KGtr7inh0h9VZqCgCMgsbJAsIAvjNO
|
||||
aZ/8fmfDf20swTTLZavSq2nIIRY5fqDRgdlvjSxCnVV6VZiHHEPe3auESh1EM7mG
|
||||
YfjK8192LpjMDafYx1vjnk7ZgO+weISWrMX/cj6M6r63NNp8L3J72rwhipBDZ1/1
|
||||
SqXYx3yBa1iCwcZCpKqPwF7zwRktq5Fz9unWhaw6h09p3kUS3Bw3W1o2rCsaweFa
|
||||
6G4X7iKhOH2rsKa3amrihaZCsDFLoRJkvyx7M+kIPP3qocNN/3ciOGhy4w2CA7fZ
|
||||
QFfsx8XAAIgXVGfUS/4/I9MPlcdHur6z5p2snBBQgQKBgQDb67uAyoKGg2zHAwXv
|
||||
A69bqM+g3m/CpzMi0GeYON91WO/yqN6NU6uMEyQ7tPfsRI9XTA+rOxxpZBFQyocZ
|
||||
AKepWwf7uZUwEZSDoxBYvcHayksLNF3lIQpQZQUBkikabVa0SVR6ihzIuHOJ3nob
|
||||
Q7qWyGG3VjbtyV9BAWUUPlcBgQKBgQDRj4P7Lj/si8QQ7Lq1xQsF9WaeU14DlCl7
|
||||
n60DJOL0tnwZjigUUDi7j/eb79xmi87BVsUSKoYS3BJF/v07h8LKafCUKy/1bAnT
|
||||
OGyCwP2D73CDkL/1jalQaJcjnz7s9+Saxyd9Ixx3m9avlAbHDiI6faRNmkBxs3dF
|
||||
RTHe6MHn5QKBgFV6pdGkZOFlueUMjsTdGM62qaUscCInnN+eQ3XOPUS+Qd1+t6oU
|
||||
6Gu0kPPIHkkuSMy0mq6CdkOcioJthd84+vH/mPXFp3AclS4pNlRXxT6GPG7pdsl1
|
||||
cy3WZgC7T9CeyQGgMv7CKff2gaoH2Ew6og6zag+5qfX4vFZm9WPN60GBAoGAFeGR
|
||||
W1nR7OYPG+FMAYzIgN/FzkRQLbl7t1/N1eU1GW4weQ6h2rUhp1v587tQ3Rg+B2wC
|
||||
+cmc5D08Xzinwl6DlVUIfMAhqtOUFwzuL5ztG6iVq/ciRAZ9plq1ZU/MZzvfD9Y5
|
||||
plRTNZ39BapEJuav5kGWNVAk6Hpfusjl0yuki40CgYA5FQg15B9Wr8oPzz0gd8Ie
|
||||
1J62Lg+Hk0RzGJkWiNPsH2IR/umjSJeu0CxVHrDtI8YAdFkZVBKb5e8RsQ5+IoAY
|
||||
GLmbbvuvTX/A0mU6Em7Lyy/Fl0gky/9o6/Cvq3W748VOjOvpb9itqje67scilBW9
|
||||
fYFIDPbqNfkp5hHC3MnQ0Q==
|
||||
-----END PRIVATE KEY-----
|
||||
Binary file not shown.
+3
-3
@@ -46,7 +46,7 @@ static HCERTSTORE WINAPI my_CertOpenStore(
|
||||
const void *pvPara
|
||||
);
|
||||
|
||||
static BOOL my_WinHttpSetOption(
|
||||
static BOOL WINAPI my_WinHttpSetOption(
|
||||
HINTERNET hInternet,
|
||||
DWORD dwOption,
|
||||
LPVOID lpBuffer,
|
||||
@@ -70,7 +70,7 @@ static HCERTSTORE (WINAPI *next_CertOpenStore)(
|
||||
const void *pvPara
|
||||
);
|
||||
|
||||
static BOOL (*next_WinHttpSetOption)(
|
||||
static BOOL (WINAPI *next_WinHttpSetOption)(
|
||||
HINTERNET hInternet,
|
||||
DWORD dwOption,
|
||||
LPVOID lpBuffer,
|
||||
@@ -272,7 +272,7 @@ static HCERTSTORE WINAPI my_CertOpenStore(
|
||||
return ret;
|
||||
}
|
||||
|
||||
static BOOL my_WinHttpSetOption(
|
||||
static BOOL WINAPI my_WinHttpSetOption(
|
||||
HINTERNET hInternet,
|
||||
DWORD dwOption,
|
||||
LPVOID lpBuffer,
|
||||
|
||||
Reference in New Issue
Block a user