📄 vpnmac.c
字号:
OUT PUINT BytesTransferred
)
{
DBG_FUNC("MacTransferData")
NDIS_STATUS status;
PBINDING_CONTEXT binding;
PVPN_ADAPTER adapter;
PPGPNDIS_PACKET pgpPacket;
BOOLEAN fragment = TRUE;
DBG_ENTER();
binding = (PBINDING_CONTEXT)MacBindingHandle;
adapter = binding->adapter;
// Check to see if the packet is in the list.
// If not, it'a unsecured one pass it to the NIC driver.
pgpPacket = PacketRemoveBySrcPacket(adapter, &adapter->incoming_indicateComplete_wait_list, MacReceiveContext);
if (pgpPacket == NULL)
{
pgpPacket = PacketRemoveBySrcPacket(adapter, &adapter->incoming_fragment_indicateComplete_wait_list, MacReceiveContext);
}
else
{
fragment = FALSE;
}
if (pgpPacket == NULL)
{
pgpPacket = PGPNdisPacketAllocWithBindingContext(&status, adapter);
pgpPacket->srcPacket = Packet;
pgpPacket->Binding = binding;
PacketEnqueue(adapter, &adapter->incoming_plaintransferComplete_wait_list, pgpPacket);
NdisTransferData(&status,
adapter->NdisBindingHandleToRealMac,
MacReceiveContext,
ByteOffset,
BytesToTransfer,
Packet,
BytesTransferred);
if (status != NDIS_STATUS_PENDING)
{
pgpPacket = PacketRemoveBySrcPacket(adapter, &adapter->incoming_plaintransferComplete_wait_list, Packet);
PGPNdisPacketFreeWithBindingContext(adapter, pgpPacket);
}
}
else
{
ASSERT(FALSE);
}
DBG_LEAVE(status);
return NDIS_STATUS_SUCCESS;
}
/*
*
*/
NDIS_STATUS MacDriverEntry(
IN PDRIVER_OBJECT DriverObject,
IN PUNICODE_STRING RegistryPath
)
{
DBG_FUNC("MacDriverEntry")
NDIS_STATUS status;
NDIS_MAC_CHARACTERISTICS MacChar;
DBG_ENTER();
VpnAdapterGlobal = NULL;
VpnAdapterCreated = FALSE;
NdisZeroMemory(&MacChar,sizeof(MacChar));
MacChar.MajorNdisVersion = NDIS_MAJOR_VERSION;
MacChar.MinorNdisVersion = NDIS_MINOR_VERSION;
MacChar.AddAdapterHandler = MacAddAdapter;
MacChar.CloseAdapterHandler = MacCloseAdapter;
MacChar.OpenAdapterHandler = MacOpenAdapter;
MacChar.QueryGlobalStatisticsHandler= MacQueryGlobalStatistics;
MacChar.RemoveAdapterHandler = MacRemoveAdapter;
MacChar.ResetHandler = MacReset;
MacChar.RequestHandler = MacRequest;
MacChar.SendHandler = MacSend;
MacChar.TransferDataHandler = MacTransferData;
MacChar.UnloadMacHandler = MacUnload;
MacChar.Name = DriverName;
ASSERT(PGPnetDriver.NdisWrapperHandle);
NdisRegisterMac(&status,
&PGPnetDriver.NdisMacHandle,
PGPnetDriver.NdisWrapperHandle,
(NDIS_HANDLE)&PGPnetDriver,
&MacChar,
sizeof(MacChar)
);
if (status != NDIS_STATUS_SUCCESS)
{
DBG_PRINT(("!!!!! %s: NdisRegisterMac status=%Xh\n",
status););
}
return (status);
}
#if DBG_MESSAGE
static struct _SupportedOidArray {
PCHAR OidName;
NDIS_OID Oid;
} SupportedOidArray[ ] = {
"OID_GEN_SUPPORTED_LIST", 0x00010101,
"OID_GEN_HARDWARE_STATUS", 0x00010102,
"OID_GEN_MEDIA_SUPPORTED", 0x00010103,
"OID_GEN_MEDIA_IN_USE", 0x00010104,
"OID_GEN_MAXIMUM_LOOKAHEAD", 0x00010105,
"OID_GEN_MAXIMUM_FRAME_SIZE", 0x00010106,
"OID_GEN_LINK_SPEED", 0x00010107,
"OID_GEN_TRANSMIT_BUFFER_SPACE", 0x00010108,
"OID_GEN_RECEIVE_BUFFER_SPACE", 0x00010109,
"OID_GEN_TRANSMIT_BLOCK_SIZE", 0x0001010A,
"OID_GEN_RECEIVE_BLOCK_SIZE", 0x0001010B,
"OID_GEN_VENDOR_ID", 0x0001010C,
"OID_GEN_VENDOR_DESCRIPTION", 0x0001010D,
"OID_GEN_CURRENT_PACKET_FILTER", 0x0001010E,
"OID_GEN_CURRENT_LOOKAHEAD", 0x0001010F,
"OID_GEN_DRIVER_VERSION", 0x00010110,
"OID_GEN_MAXIMUM_TOTAL_SIZE", 0x00010111,
"OID_GEN_PROTOCOL_OPTIONS", 0x00010112,
"OID_GEN_MAC_OPTIONS", 0x00010113,
"OID_GEN_MEDIA_CONNECT_STATUS", 0x00010114,
"OID_GEN_XMIT_OK", 0x00020101,
"OID_GEN_RCV_OK", 0x00020102,
"OID_GEN_XMIT_ERROR", 0x00020103,
"OID_GEN_RCV_ERROR", 0x00020104,
"OID_GEN_RCV_NO_BUFFER", 0x00020105,
"OID_GEN_DIRECTED_BYTES_XMIT", 0x00020201,
"OID_GEN_DIRECTED_FRAMES_XMIT", 0x00020202,
"OID_GEN_MULTICAST_BYTES_XMIT", 0x00020203,
"OID_GEN_MULTICAST_FRAMES_XMIT", 0x00020204,
"OID_GEN_BROADCAST_BYTES_XMIT", 0x00020205,
"OID_GEN_BROADCAST_FRAMES_XMIT", 0x00020206,
"OID_GEN_DIRECTED_BYTES_RCV", 0x00020207,
"OID_GEN_DIRECTED_FRAMES_RCV", 0x00020208,
"OID_GEN_MULTICAST_BYTES_RCV", 0x00020209,
"OID_GEN_MULTICAST_FRAMES_RCV", 0x0002020A,
"OID_GEN_BROADCAST_BYTES_RCV", 0x0002020B,
"OID_GEN_BROADCAST_FRAMES_RCV", 0x0002020C,
"OID_GEN_RCV_CRC_ERROR", 0x0002020D,
"OID_GEN_TRANSMIT_QUEUE_LENGTH", 0x0002020E,
"OID_802_3_PERMANENT_ADDRESS", 0x01010101,
"OID_802_3_CURRENT_ADDRESS", 0x01010102,
"OID_802_3_MULTICAST_LIST", 0x01010103,
"OID_802_3_MAXIMUM_LIST_SIZE", 0x01010104,
"OID_802_3_RCV_ERROR_ALIGNMENT", 0x01020101,
"OID_802_3_XMIT_ONE_COLLISION", 0x01020102,
"OID_802_3_XMIT_MORE_COLLISIONS", 0x01020103,
"OID_802_3_XMIT_DEFERRED", 0x01020201,
"OID_802_3_XMIT_MAX_COLLISIONS", 0x01020202,
"OID_802_3_RCV_OVERRUN", 0x01020203,
"OID_802_3_XMIT_UNDERRUN", 0x01020204,
"OID_802_3_XMIT_HEARTBEAT_FAILURE", 0x01020205,
"OID_802_3_XMIT_TIMES_CRS_LOST", 0x01020206,
"OID_802_3_XMIT_LATE_COLLISIONS", 0x01020207,
"OID_802_3_PRIORITY", 0x01020208,
"OID_802_5_PERMANENT_ADDRESS", 0x02010101,
"OID_802_5_CURRENT_ADDRESS", 0x02010102,
"OID_802_5_CURRENT_FUNCTIONAL", 0x02010103,
"OID_802_5_CURRENT_GROUP", 0x02010104,
"OID_802_5_LAST_OPEN_STATUS", 0x02010105,
"OID_802_5_CURRENT_RING_STATUS", 0x02010106,
"OID_802_5_CURRENT_RING_STATE", 0x02010107,
"OID_802_5_LINE_ERRORS", 0x02020101,
"OID_802_5_LOST_FRAMES", 0x02020102,
"OID_802_5_BURST_ERRORS", 0x02020201,
"OID_802_5_AC_ERRORS", 0x02020202,
"OID_802_5_ABORT_DELIMETERS", 0x02020203,
"OID_802_5_FRAME_COPIED_ERRORS", 0x02020204,
"OID_802_5_FREQUENCY_ERRORS", 0x02020205,
"OID_802_5_TOKEN_ERRORS", 0x02020206,
"OID_802_5_INTERNAL_ERRORS", 0x02020207,
"OID_FDDI_LONG_PERMANENT_ADDR", 0x03010101,
"OID_FDDI_LONG_CURRENT_ADDR", 0x03010102,
"OID_FDDI_LONG_MULTICAST_LIST", 0x03010103,
"OID_FDDI_LONG_MAX_LIST_SIZE", 0x03010104,
"OID_FDDI_SHORT_PERMANENT_ADDR", 0x03010105,
"OID_FDDI_SHORT_CURRENT_ADDR", 0x03010106,
"OID_FDDI_SHORT_MULTICAST_LIST", 0x03010107,
"OID_FDDI_SHORT_MAX_LIST_SIZE", 0x03010108,
"OID_FDDI_ATTACHMENT_TYPE", 0x03020101,
"OID_FDDI_UPSTREAM_NODE_LONG", 0x03020102,
"OID_FDDI_DOWNSTREAM_NODE_LONG", 0x03020103,
"OID_FDDI_FRAME_ERRORS", 0x03020104,
"OID_FDDI_FRAMES_LOST", 0x03020105,
"OID_FDDI_RING_MGT_STATE", 0x03020106,
"OID_FDDI_LCT_FAILURES", 0x03020107,
"OID_FDDI_LEM_REJECTS", 0x03020108,
"OID_FDDI_LCONNECTION_STATE", 0x03020109,
"OID_FDDI_SMT_STATION_ID", 0x03030201,
"OID_FDDI_SMT_OP_VERSION_ID", 0x03030202,
"OID_FDDI_SMT_HI_VERSION_ID", 0x03030203,
"OID_FDDI_SMT_LO_VERSION_ID", 0x03030204,
"OID_FDDI_SMT_MANUFACTURER_DATA", 0x03030205,
"OID_FDDI_SMT_USER_DATA", 0x03030206,
"OID_FDDI_SMT_MIB_VERSION_ID", 0x03030207,
"OID_FDDI_SMT_MAC_CT", 0x03030208,
"OID_FDDI_SMT_NON_MASTER_CT", 0x03030209,
"OID_FDDI_SMT_MASTER_CT", 0x0303020A,
"OID_FDDI_SMT_AVAILABLE_PATHS", 0x0303020B,
"OID_FDDI_SMT_CONFIG_CAPABILITIES", 0x0303020C,
"OID_FDDI_SMT_CONFIG_POLICY", 0x0303020D,
"OID_FDDI_SMT_CONNECTION_POLICY", 0x0303020E,
"OID_FDDI_SMT_T_NOTIFY", 0x0303020F,
"OID_FDDI_SMT_STAT_RPT_POLICY", 0x03030210,
"OID_FDDI_SMT_TRACE_MAX_EXPIRATION", 0x03030211,
"OID_FDDI_SMT_PORT_INDEXES", 0x03030212,
"OID_FDDI_SMT_MAC_INDEXES", 0x03030213,
"OID_FDDI_SMT_BYPASS_PRESENT", 0x03030214,
"OID_FDDI_SMT_ECM_STATE", 0x03030215,
"OID_FDDI_SMT_CF_STATE", 0x03030216,
"OID_FDDI_SMT_HOLD_STATE", 0x03030217,
"OID_FDDI_SMT_REMOTE_DISCONNECT_FLAG", 0x03030218,
"OID_FDDI_SMT_STATION_STATUS", 0x03030219,
"OID_FDDI_SMT_PEER_WRAP_FLAG", 0x0303021A,
"OID_FDDI_SMT_MSG_TIME_STAMP", 0x0303021B,
"OID_FDDI_SMT_TRANSITION_TIME_STAMP", 0x0303021C,
"OID_FDDI_SMT_SET_COUNT", 0x0303021D,
"OID_FDDI_SMT_LAST_SET_STATION_ID", 0x0303021E,
"OID_FDDI_MAC_FRAME_STATUS_FUNCTIONS", 0x0303021F,
"OID_FDDI_MAC_BRIDGE_FUNCTIONS", 0x03030220,
"OID_FDDI_MAC_T_MAX_CAPABILITY", 0x03030221,
"OID_FDDI_MAC_TVX_CAPABILITY", 0x03030222,
"OID_FDDI_MAC_AVAILABLE_PATHS", 0x03030223,
"OID_FDDI_MAC_CURRENT_PATH", 0x03030224,
"OID_FDDI_MAC_UPSTREAM_NBR", 0x03030225,
"OID_FDDI_MAC_DOWNSTREAM_NBR", 0x03030226,
"OID_FDDI_MAC_OLD_UPSTREAM_NBR", 0x03030227,
"OID_FDDI_MAC_OLD_DOWNSTREAM_NBR", 0x03030228,
"OID_FDDI_MAC_DUP_ADDRESS_TEST", 0x03030229,
"OID_FDDI_MAC_REQUESTED_PATHS", 0x0303022A,
"OID_FDDI_MAC_DOWNSTREAM_PORT_TYPE", 0x0303022B,
"OID_FDDI_MAC_INDEX", 0x0303022C,
"OID_FDDI_MAC_SMT_ADDRESS", 0x0303022D,
"OID_FDDI_MAC_LONG_GRP_ADDRESS", 0x0303022E,
"OID_FDDI_MAC_SHORT_GRP_ADDRESS", 0x0303022F,
"OID_FDDI_MAC_T_REQ", 0x03030230,
"OID_FDDI_MAC_T_NEG", 0x03030231,
"OID_FDDI_MAC_T_MAX", 0x03030232,
"OID_FDDI_MAC_TVX_VALUE", 0x03030233,
"OID_FDDI_MAC_T_PRI0", 0x03030234,
"OID_FDDI_MAC_T_PRI1", 0x03030235,
"OID_FDDI_MAC_T_PRI2", 0x03030236,
"OID_FDDI_MAC_T_PRI3", 0x03030237,
"OID_FDDI_MAC_T_PRI4", 0x03030238,
"OID_FDDI_MAC_T_PRI5", 0x03030239,
"OID_FDDI_MAC_T_PRI6", 0x0303023A,
"OID_FDDI_MAC_FRAME_CT", 0x0303023B,
"OID_FDDI_MAC_COPIED_CT", 0x0303023C,
"OID_FDDI_MAC_TRANSMIT_CT", 0x0303023D,
"OID_FDDI_MAC_TOKEN_CT", 0x0303023E,
"OID_FDDI_MAC_ERROR_CT", 0x0303023F,
"OID_FDDI_MAC_LOST_CT", 0x03030240,
"OID_FDDI_MAC_TVX_EXPIRED_CT", 0x03030241,
"OID_FDDI_MAC_NOT_COPIED_CT", 0x03030242,
"OID_FDDI_MAC_LATE_CT", 0x03030243,
"OID_FDDI_MAC_RING_OP_CT", 0x03030244,
"OID_FDDI_MAC_FRAME_ERROR_THRESHOLD", 0x03030245,
"OID_FDDI_MAC_FRAME_ERROR_RATIO", 0x03030246,
"OID_FDDI_MAC_NOT_COPIED_THRESHOLD", 0x03030247,
"OID_FDDI_MAC_NOT_COPIED_RATIO", 0x03030248,
"OID_FDDI_MAC_RMT_STATE", 0x03030249,
"OID_FDDI_MAC_DA_FLAG", 0x0303024A,
"OID_FDDI_MAC_UNDA_FLAG", 0x0303024B,
"OID_FDDI_MAC_FRAME_ERROR_FLAG", 0x0303024C,
"OID_FDDI_MAC_NOT_COPIED_FLAG", 0x0303024D,
"OID_FDDI_MAC_MA_UNITDATA_AVAILABLE", 0x0303024E,
"OID_FDDI_MAC_HARDWARE_PRESENT", 0x0303024F,
"OID_FDDI_MAC_MA_UNITDATA_ENABLE", 0x03030250,
"OID_FDDI_PATH_INDEX", 0x03030251,
"OID_FDDI_PATH_RING_LATENCY", 0x03030252,
"OID_FDDI_PATH_TRACE_STATUS", 0x03030253,
"OID_FDDI_PATH_SBA_PAYLOAD", 0x03030254,
"OID_FDDI_PATH_SBA_OVERHEAD", 0x03030255,
"OID_FDDI_PATH_CONFIGURATION", 0x03030256,
"OID_FDDI_PATH_T_R_MODE", 0x03030257,
"OID_FDDI_PATH_SBA_AVAILABLE", 0x03030258,
"OID_FDDI_PATH_TVX_LOWER_BOUND", 0x03030259,
"OID_FDDI_PATH_T_MAX_LOWER_BOUND", 0x0303025A,
"OID_FDDI_PATH_MAX_T_REQ", 0x0303025B,
"OID_FDDI_PORT_MY_TYPE", 0x0303025C,
"OID_FDDI_PORT_NEIGHBOR_TYPE", 0x0303025D,
"OID_FDDI_PORT_CONNECTION_POLICIES", 0x0303025E,
"OID_FDDI_PORT_MAC_INDICATED", 0x0303025F,
"OID_FDDI_PORT_CURRENT_PATH", 0x03030260,
"OID_FDDI_PORT_REQUESTED_PATHS", 0x03030261,
"OID_FDDI_PORT_MAC_PLACEMENT", 0x03030262,
"OID_FDDI_PORT_AVAILABLE_PATHS", 0x03030263,
"OID_FDDI_PORT_MAC_LOOP_TIME", 0x03030264,
"OID_FDDI_PORT_PMD_CLASS", 0x03030265,
"OID_FDDI_PORT_CONNECTION_CAPABILITIES", 0x03030266,
"OID_FDDI_PORT_INDEX", 0x03030267,
"OID_FDDI_PORT_MAINT_LS", 0x03030268,
"OID_FDDI_PORT_BS_FLAG", 0x03030269,
"OID_FDDI_PORT_PC_LS", 0x0303026A,
"OID_FDDI_PORT_EB_ERROR_CT", 0x0303026B,
"OID_FDDI_PORT_LCT_FAIL_CT", 0x0303026C,
"OID_FDDI_PORT_LER_ESTIMATE", 0x0303026D,
"OID_FDDI_PORT_LEM_REJECT_CT", 0x0303026E,
"OID_FDDI_PORT_LEM_CT", 0x0303026F,
"OID_FDDI_PORT_LER_CUTOFF", 0x03030270,
"OID_FDDI_PORT_LER_ALARM", 0x03030271,
"OID_FDDI_PORT_CONNNECT_STATE", 0x03030272,
"OID_FDDI_PORT_PCM_STATE", 0x03030273,
"OID_FDDI_PORT_PC_WITHHOLD", 0x03030274,
"OID_FDDI_PORT_LER_FLAG", 0x03030275,
"OID_FDDI_PORT_HARDWARE_PRESENT", 0x03030276,
"OID_FDDI_SMT_STATION_ACTION", 0x03030277,
"OID_FDDI_PORT_ACTION", 0x03030278,
"OID_FDDI_IF_DESCR", 0x03030279,
"OID_FDDI_IF_TYPE", 0x0303027A,
"OID_FDDI_IF_MTU", 0x0303027B,
"OID_FDDI_IF_SPEED", 0x0303027C,
"OID_FDDI_IF_PHYS_ADDRESS", 0x0303027D,
"OID_FDDI_IF_ADMIN_STATUS", 0x0303027E,
"OID_FDDI_IF_OPER_STATUS", 0x0303027F,
"OID_FDDI_IF_LAST_CHANGE", 0x03030280,
"OID_FDDI_IF_IN_OCTETS", 0x03030281,
"OID_FDDI_IF_IN_UCAST_PKTS", 0x03030282,
"OID_FDDI_IF_IN_NUCAST_PKTS", 0x03030283,
"OID_FDDI_IF_IN_DISCARDS", 0x03030284,
"OID_FDDI_IF_IN_ERRORS", 0x03030285,
"OID_FDDI_IF_IN_UNKNOWN_PROTOS", 0x03030286,
"OID_FDDI_IF_OUT_OCTETS", 0x03030287,
"OID_FDDI_IF_OUT_UCAST_PKTS", 0x03030288,
"OID_FDDI_IF_OUT_NUCAST_PKTS", 0x03030289,
"OID_FDDI_IF_OUT_DISCARDS", 0x0303028A,
"OID_FDDI_IF_OUT_ERRORS", 0x0303028B,
"OID_FDDI_IF_OUT_QLEN", 0x0303028C,
"OID_FDDI_IF_SPECIFIC", 0x0303028D,
"OID_WAN_PERMANENT_ADDRESS", 0x04010101,
"OID_WAN_CURRENT_ADDRESS", 0x04010102,
"OID_WAN_QUALITY_OF_SERVICE", 0x04010103,
"OID_WAN_PROTOCOL_TYPE", 0x04010104,
"OID_WAN_MEDIUM_SUBTYPE", 0x04010105,
"OID_WAN_HEADER_FORMAT", 0x04010106,
"OID_WAN_GET_INFO", 0x04010107,
"OID_WAN_SET_LINK_INFO", 0x04010108,
"OID_WAN_GET_LINK_INFO", 0x04010109,
"OID_WAN_LINE_COUNT", 0x0401010A,
"OID_WAN_GET_BRIDGE_INFO", 0x0401020A,
"OID_WAN_SET_BRIDGE_INFO", 0x0401020B,
"OID_WAN_GET_COMP_INFO", 0x0401020C,
"OID_WAN_SET_COMP_INFO", 0x0401020D,
"OID_WAN_GET_STATS_INFO", 0x0401020E,
"OID_PGP_OPERATION_MANDATORY", 0xFF010100,
"OID_PGP_WIN32_IOCTL", 0xFF010101,
"OID_PGP_OPERATION_OPTIONAL", 0xFF010200,
"OID_PGP_EVENT_CREATE", 0xFF010201,
"OID_PGP_EVENT_DESTROY", 0xFF010202,
"OID_PGP_SHARED_MEM_ALLOC", 0xFF010203,
"OID_PGP_SHARED_MEM_FREE", 0xFF010204,
"OID_PGP_NEWCONFIG", 0xFF010205,
"OID_PGP_NEWHOST", 0xFF010206,
"OID_PGP_NEWSA", 0xFF010207,
"OID_PGP_SAFAILED", 0xFF010208,
"OID_PGP_SADIED", 0xFF010209,
"OID_PGP_SAUPDATE", 0xFF010210,
"OID_PGP_ALLHOSTS", 0xFF010211,
"OID_PGP_SHUTDOWN", 0xFF010212,
"OID_PGP_LOCALIP", 0xFF010213,
"OID_PGP_QUEUE_INITIALIZE", 0xFF010220,
"OID_PGP_QUEUE_RELEASE", 0xFF010221,
"OID_PGP_NEW_DUMMY_HOST", 0xFF0102E0,
"OID_PGP_NEW_DUMMY_SA", 0xFF0102E1,
"OID_PGP_EVENT_SET", 0xFF0102FF,
"OID_PGP_STATISTICS_MANDATORY", 0xFF020100,
"OID_PGP_STATISTICS_OPTIONAL", 0xFF020200,
"OID_PGP_GET_SEND_PACKETS", 0xFF020201,
"OID_PGP_GET_RECEIVE_PACKETS", 0xFF020202
};
#define NUM_OID_ENTRIES (sizeof(SupportedOidArray) / sizeof(SupportedOidArray[0]))
/*
// This debug routine will lookup the printable name for the selected OID.
*/
char *
GetOidString(NDIS_OID Oid)
{
UINT i;
for (i = 0; i < NUM_OID_ENTRIES-1; i++)
{
if (SupportedOidArray[i].Oid == Oid) {
break;
}
}
return(SupportedOidArray[i].OidName);
}
void NdisRequestTrace(PNDIS_REQUEST NdisRequest)
{
DBG_DISPLAY(("NdisRequest: %s\n", GetOidString(NdisRequest->DATA.QUERY_INFORMATION.Oid)););
}
#else
void NdisRequestTrace(PNDIS_REQUEST NdisRequest)
{
}
#endif // DBG_MESSAGE
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -